2017-02-08 11 views
0

を使用して追加された要素または要素IDを見つけることができません。新しい要素をdiv要素に追加しています。また、新しい追加要素のIDを設定しましたが、jqueryを使用してphp

$.ajax({ //ajax call 
    type: "POST",  
    url: "ajax/ajax.php", 
    data: { users: values } 
}).done(function(msg) { 
    //do something with msg which is response 
    //this line will put the response to item with id `#txtHint`. 
    $("#divselect").html(msg) 
    //alert(msg); 
}); 
}); 

新しい要素は正常に追加されましたが、ボタンをクリックするとjavascriptはその新しい要素IDを見つけることができません。 JavaScriptのみをリロードする方法はありますか?何をすべきですか?

 $("#validator").click(function(){//validator is my submit button id 

    var value = document.getElementById('select_division'); //select_division is id of my new added element 
    alert(value); 
} 

が参照エラーになります。これに。

+2

IDを支援するためのおかげで一意である必要があり

var value = document.getElementById('elementid').value; 

で動作します

$("#elementid").click(function(){//v 

で行うことはできません。同じIDで複数の要素を作成している可能性があります。 –

+0

もう1つのケースは、ハンドラの委譲後でも要素を作成する場合です。そうであれば、委任されたイベントを読み込む必要があります:parent.on( 'click'、 '$(createdEl)、function(){}); – Daniel

+0

答えがあなたの問題を解決した場合は、答えを受け入れることを検討してください。 http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-workがここに戻って、ティック/チェックマークで緑色に変わるまで同じことを行う方法があります。これはコミュニティに通知し、解決策が見つかりました。そうでない場合、他の人は質問がまだ開いていると思うかもしれませんし、(もっと)回答を投稿したいかもしれません。あなたはポイントを獲得し、他の人はあなたを助けることを奨励されます。 *スタックへようこそ!* –

答えて

2

jQueryは実行時にページ内の要素のみを認識しているため、DOMに追加された新しい要素はjQueryによって認識されません。この問題を解決するには、event delegationを使用して、jQueryがページの読み込みを実行したときにそこにあったDOM内のポイントまで新しく追加されたアイテムからのイベントをバブリングします。多くの人々はバブリングされたイベントをキャッチする場所としてdocumentを使用していますが、DOMツリー全体まで進む必要はありません。理想的にはyou should delegate to the nearest parent existing at the time of page load.

さらに、ID's Must Be Uniqueです。具体的には、これらの要素と対話しようとするとJavaScriptとCSSに問題が発生するためです。

はクラスに(すでにjQueryのを使用しているので、jQueryのからバニラJSへの切り替えが本当に必要ではありません)あなたのセレクタを変更し、イベントの委任を実行するために on()を使用

:問題の

$(document).on('click', '.validator', (function(){//validator is my submit button id 
    var value = document.getElementsByClassName('select_division'); //select_division is id of my new added element 
    alert(value); 
}) 

一部はここにありますvalidatorに関連する具体的なselect_divisionが必要です。それを得るためには、いくつかのDOMトラバーサルを実行するかもしれません。あなたのマークアップを見ることなく、トラバースを行う方法を教えてくれません。

-1

私は間違って書いていました。 唯一の

関連する問題