jquery只运行一次

时间:2015-07-18 22:35:53

标签: jquery triggers

我有一段代码依赖于滚动位置,运行。问题是它每次用户滚动时都会运行,这很烦人,所以我希望能够只运行一次功能,如果if语句(我在示例中所做的那样)是真的。

我的代码示例:

window.addEventListener("scroll", function() {
            var     top     = this.scrollY,
                    posWeb  = $('section#web').position().top;

            if(top > posWeb){
                $('div.test').each(function(){
                    $(this).animate({
                        width:'100%'
                    }, 1000);
                });
            }
        }, false);

我尝试在每个函数之前放置一个(),但不幸的是,这不起作用。建议? :)

1 个答案:

答案 0 :(得分:1)

一个简单的标志变量将处理它。

var animated=false;

window.addEventListener("scroll", function () {
    var top = this.scrollY,
        posWeb = $('section#web').position().top;
    // new condition added
    if (top > posWeb && !animated) {
        animated = true; // set true now so animations don't get attempted again
        $('div.test').each(function () {
            $(this).animate({
                width: '100%'
            }, 1000);
        });
    }
}, false);

one()仅用于事件,而不是动画