ページコンテンツをロードするために、無限スクロールプラグインhttp://www.infinite-scroll.com/infinite-scroll-jquery-plugin/を使用しています。
次のようなjQueryイベントリスナーがあります。
$('.like-action').on('click',
function(event){
likeComment($(this));
event.preventDefault();
});
それはにロードされ$(document).ready
ます。ただし、新しいコンテンツがイベントとともにロードされるとinfinitescroll
、イベントリスナーは新しいコンテンツに適用/使用できなくなります。そこで、infinitescroll
(すべてのコンテンツがロードされたときに)のコールバックで呼び出される関数を作成しました。関数:
function afterUpdate(){
$('.like-action').on('click',function(event){
likeComment($(this));
event.preventDefault();
});}
ただし、最終的に発生するのは、(すでにロードされている)古いコンテンツの場合、。を持つリンクがクリックされたとき.like-action class
にlikeComment
関数が呼び出されますが、新しいコンテンツがロードされた回数+元のコンテンツ$(document).ready
です。
例:コンテンツはページの読み込み時に読み込まれます。リンクはlikeComment
クリック時に1を実行します。下にスクロールして新しいコンテンツをロード(およびコールバック)した後、前と同じリンクをクリックすると、likeComment
が2回実行されます。などなど。
私はここで何が間違っているのですか?
イベントリスナーが正しく書かれていませんか?
DOM
ページの読み込み時に要素がなかった場合でも、すべての要素に対して自動的に機能するリスナーを作成する方法はありますか?
または、無限スクロールによってロードされたばかりの要素にのみ.onを登録する方法はありますか(したがって、重複はありません)?