我使用jquery.visible.js来检测DIV何时在视图中(它在插件上启动动画,就像圆形动画效果一样)。但它每次使用滚轮时都会继续发射,无限期地增加自身,我无法找到一种方法来停止它()或取消绑定()?谢谢!
// Check vertical for circliful using jquery.visible.js
$(window).scroll(function(){
if ($("#moreSection").visible(true)){
// trigger circliful
$('#myStat-1').circliful() // this wont stop firing
}
});
答案 0 :(得分:4)
正如#Shikkediel所指出的那样,scroll()
会因帧率变化而被解雇。所以每个卷轴都可以触发数百次。
你可以这样做:
$(window).scroll(function(){
if ($("#moreSection").visible(true)){
doActionAndStopScript();
}
});
function doActionAndStopScript(){
$('#myStat-1').circliful() // now it will fire once
$(window).unbind('scroll');
}
您只能在unbind()
$(window)
答案 1 :(得分:3)
对于滚动的每个像素,scroll
事件将触发一次。要解决此问题,您可以使用一个计时器,该计时器仅在滚动停止x毫秒后执行逻辑。试试这个:
var timer;
$(window).scroll(function() {
clearTimeout(timer);
timer = setTimeout(function() {
if ($("#moreSection").visible(true)){
$('#myStat-1').circliful();
}
}, 250);
});
250ms通常足够长,等待启动代码。您可以根据需要调整此值。