0

新しいコンテンツをページにロードした後に Javascript イベント リスナーを更新する最良の方法は何ですか? データをフィードにロードする前にクリック リスナーを追加すると、クリック リスナーが機能しないことに気付きました。この問題を修正するために、ajax 呼び出しの .done コールバックに入れました。

$(".likebutton").click(function(){
    //function
});

同じフィードにさらにデータをロードすると、以前にあった .likebutton のすべてのインスタンスにクリック リスナーが再度追加されます。これは、新しいデータをロードした回数に応じて、関数が 2 回または 3 回呼び出される場合があることを意味します。

すべてのオブジェクトのリスナーを削除してから、毎回新しいリスナーを追加できることはわかっていますが、それがベスト プラクティスかどうかはわかりません。

提案?

4

1 に答える 1

7

id を持つ div のような特定の要素内に新しいコンテンツを常にロードすると仮定するとcontent、メソッドを使用しonてクリックイベントをこの要素に委任できます。

$('#content').on('click', '.likebutton', function() {
    // your code
});

例: http://jsfiddle.net/nxpgp/.likebutton (新しいものはすべてクリック イベントに応答することに注意してください)

于 2013-11-10T01:00:46.033 に答える