每次在页面中滚动时都会执行一个函数。在该函数中有一个.each()函数来循环遍历所有列表项:
$('#scroller').on('appear', function() {
$('#chart li').each(function(ev){
// Do something
});
});
我的问题是我只想循环遍历这些列表项一次。我尝试返回false和ev.preventDefault,但它使//做某事仅适用于第一个列表项。
我发现this post几乎相同,但应用此方法我得到一个“对象[对象数组]没有方法'应用'”错误。有什么建议吗?
答案 0 :(得分:5)
在使用变量之前,只需检查一下是否已完成:
var hasLooped = false;
$('#scroller').on('appear', function() {
if(!hasLooped){
$('#chart li').each(function(ev){
// Do something
});
hasLooped = true;
}
});
答案 1 :(得分:2)
我认为汤姆上面的回答非常直截了当,可以为您提供所需的内容。我只是提供这个作为替代或以其他方式思考。
// create a seperate handler for it, and then unbind once it fires.
$('#scroller').on('scroll.onceMe', function() {
$('#chart li').each(function(ev){
// Do something
});
$('#scroller').unbind("scroll.onceMe");
});
或类似的东西: - 为它创建一个独特的处理程序。
$('#scroller').one('scroll.onceMe', function() {
$('#chart li').each(function(ev){
// Do something
});
});