我有一段代码依赖于滚动位置,运行。问题是它每次用户滚动时都会运行,这很烦人,所以我希望能够只运行一次功能,如果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);
我尝试在每个函数之前放置一个(),但不幸的是,这不起作用。建议? :)
答案 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()
仅用于事件,而不是动画