我正在尝试在由“inview”自定义事件(https://github.com/protonet )触发时设置动态加载的内容(通过无限滚动脚本:http: //www.infinite-scroll.com/ ) /jquery.inview)。
我的代码如下所示:
$(document).on("inview", ".attachment-portfoliosmall", function(e) {
if( $.data( this, "styleappended" ) ) {
return true;
}
$.data( this, "styleappended", true );
$(".attachment-portfoliosmall").css('visibility','visible').hide().fadeIn('slow');
$(".attachment-portfoliosmall").parent(".portfoliopreload").css("background", "none");
});
如您所见,使用 $.data 例程是为了确保 .on() 事件处理程序不会对选择过滤器中的每个元素执行多次。
这段代码在理论上工作得很好,除了一旦将下一页上动态加载的内容附加到文档中,.on() 例程就会再次在每个元素上运行,而不仅仅是新添加的元素。
在我的网站上,如果您滚动到下一页,您将看到所有元素淡出并再次淡入,这是由.on()
事件处理程序引起的。
如何防止它在前一页上先前处理的元素上执行?