30

で説明されているようにhttp://api.jquery.com/live/

jQuery 1.7以降、.live()メソッドは非推奨になりました。.on()を使用して、イベントハンドラーをアタッチします。

右。だから代わりに

$('.dynamicallyCreatedElement').live('click', function(){
  console.log('click');
});

私は使用する必要があります:

$('.dynamicallyCreatedElement').on('click', function(){
  console.log('click');
});

on()ただし、呼び出し後に作成された要素にイベントをバインドしません。それで、それは本当に良いlive()方法ですか?

私は何かが足りないのですか?

4

4 に答える 4

63

作業に使用onしたのと同じ方法で使用するには、次のようlive に使用する必要があります。

$(document).on("click", ".dynamicallyCreatedElement", function() {   
    console.log('click'); 
});  

したがって、onハンドラーをdocumentそれ自体にバインドし(または、実際には、新しいファイルが「表示される」コンテナー要素-明確化のための@ devnull69に感謝します)、イベントタイプとセレクターを渡します。

liveドキュメントページの途中にいくつかの例があります。

于 2012-04-24T09:44:21.663 に答える
13
$('#closestStaticParent').on('click', '.dynamicallyCreatedElement' function(){
    console.log('click');
});
于 2012-04-24T09:44:28.147 に答える
4

デリゲート()として使用

$('body').on('click', '.dynamicallyCreatedElement', function () {
});

編集:誰もがそれを理解できるように、delegate()を使用する場合、セレクターは最初の引数であり、on()では2番目の引数です。

于 2012-04-24T09:44:42.127 に答える
2

私はこのアプローチを次のように使用する必要があることを発見しました:

$('#container').on('click','.dynamicallyCreatedElement',function(){
    console.log('click');
});
于 2012-04-24T09:45:53.077 に答える