1

我有一个每次在页面内滚动时都会执行的函数。该函数中有一个 .each() 函数,用于遍历所有列表项:

$('#scroller').on('appear', function() {
    $('#chart li').each(function(ev){
            // Do something
    });
});

我的问题是我只想遍历这些列表项一次。我尝试返回 false 和 ev.preventDefault,但随后它使 //do something 仅适用于第一个列表项。

我发现这篇文章几乎是一样的,但是应用这个方法我得到一个“对象[对象数组]没有方法'应用'”错误。有什么建议么?

4

2 回答 2

6

只需在使用变量之前检查您是否已经完成:

var hasLooped = false;

$('#scroller').on('appear', function() {
    if(!hasLooped){
        $('#chart li').each(function(ev){
                // Do something
        });

        hasLooped = true;
    }
});
于 2013-03-05T22:23:16.827 回答
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
       });
 });
于 2013-03-05T22:32:37.693 回答