2016-10-10 8 views
1

私は何か簡単なことをしたい、ロードされたときに0のボタンを持っているページをクリックして、ボタンを1行追加する。これらのボタンのいずれかをクリックすると、そのボタンが削除されます。Cant DOMにhtmlボタンが追加されました

私は

$(":button").click(function(){ 
}) 

にしようとしたが、私がそれに既にこれらのボタンでページを起動した場合、それは動作しますが、クリックされているボタンを得るように見える傾けます。何かが足りない?

+1

デリゲートクリックイベント.... https://learn.jquery.com/events/event-delegation/ –

答えて

2

現在、使用しているのは、コードがイベントバインディング呼び出しを行うときにページに存在する要素にのみアタッチする「直接」バインディングです。

要素を動的に生成する場合や、操作のセレクタ(クラスの削除や追加など)を行う場合は.on() delegated-eventsアプローチを使用する必要があります。

一般的な構文

$(parentStaticContainer).on('event','selector',callback_function) 

例は

$(document).on('click', ":button", function(){ 
    //Your code 
}); 

documentの代わりに、あなたは、最寄りの静的なコンテナを使用する必要があります。

委任イベントには、後でドキュメントに追加される子孫要素のイベントを処理できるという利点があります。デリゲートされたイベントハンドラがアタッチされた時点で存在することが保証されている要素を選択することによって、デリゲートされたイベントを使用して、クリックイベントを動的に作成された要素にバインドしたり、イベントハンドラを頻繁にアタッチしたり、

良いがDirect and delegated events

+0

を読んで非常に多くのSatpalをありがとう! <3 –