【发布时间】:2012-10-10 12:43:48
【问题描述】:
我正在使用无限滚动插件http://www.infinite-scroll.com/infinite-scroll-jquery-plugin/ 来加载页面内容。
我有一个 jQuery 事件监听器,例如:
$('.like-action').on('click',
function(event){
likeComment($(this));
event.preventDefault();
});
该 get 已加载到 $(document).ready。但是,当使用 infinitescroll 加载新内容时,事件侦听器不适用于新内容/不可用。因此,我创建了一个在infinitescroll 的回调上调用的函数(当所有内容都已加载时)。函数:
function afterUpdate(){
$('.like-action').on('click',function(event){
likeComment($(this));
event.preventDefault();
});}
然而,最终发生的情况是,当单击具有.like-action class 的链接时,对于旧内容(已加载),likeComment 函数被调用,但新内容已加载多次 + 原始内容$(document).ready.
例如:内容在页面加载时加载。链接在点击时执行likeComment1。如果您单击与以前相同的链接,向下滚动并加载(和回调)新内容后,likeComment 将执行两次。等等等等。
我在这里做错了什么?
我的事件监听器写错了吗?
有没有办法编写一个侦听器,该侦听器自动适用于DOM 中的所有元素,即使它们在页面加载时不存在?
或者,有没有办法只在无限滚动刚刚加载的元素上注册 .on(所以没有重复)?
【问题讨论】:
标签: javascript jquery infinite-scroll