我有一个简单的JS,只要鼠标滚轮向上或向下移动,它就可以顺畅地自动滚动到另一个div。
这是脚本:
$(document).bind('mousewheel', function(evt) {
var delta = evt.originalEvent.wheelDelta
if(delta < 0){
$('html, body').animate({
scrollTop: $("#content-wrapper").offset().top
}, 3000);
}
else {
$('html, body').animate({
scrollTop: $("#bgheader").offset().top
}, 3000);
}
});
我的问题是,如果我用鼠标滚轮播放几秒钟,它将永远开始在这里滚动,因为记录的所有移动都会作为额外的脚本启动排队。
有没有办法对剧本加上某种“冷却”?因此,在使用一次之后它可以再次使用,让我们说'3秒?或者动画结束后?
答案 0 :(得分:1)
你可以取消绑定wheel事件监听器,然后使用jQuery的getaddrinfo()
回调函数在事件监听完成后重新附加它,如下所示:
IN6ADDR_ANY_INIT
答案 1 :(得分:0)
我已经超时了。
var maxPoll = 3000,
eventActive = false;
$(document).bind('mousewheel', function(evt) {
if(eventActive) {
return
} else {
setTimeout(maxPoll, function() { eventActive = True })
}
var delta = evt.originalEvent.wheelDelta
if(delta < 0){
$('html, body').animate({
scrollTop: $("#content-wrapper").offset().top
}, maxPoll);
}
else {
$('html, body').animate({
scrollTop: $("#bgheader").offset().top
}, maxPoll);
}
});
它很粗糙,它使用全局变量,但它基本上会在动画运行时关闭你的事件。