Javascript 在计时器内设置scrollLeft不会';行不通
我有一只很奇怪的虫子。我试图限制jquery鼠标滚轮函数中滚动调用的数量。我设置了一个计时器来限制调用,但它似乎没有调用函数scrollLeft。但是,如果它没有包装在任何计时器中,它就可以工作。这是某种本地JS错误吗?或者有人找到了解决办法吗Javascript 在计时器内设置scrollLeft不会';行不通,javascript,jquery,Javascript,Jquery,我有一只很奇怪的虫子。我试图限制jquery鼠标滚轮函数中滚动调用的数量。我设置了一个计时器来限制调用,但它似乎没有调用函数scrollLeft。但是,如果它没有包装在任何计时器中,它就可以工作。这是某种本地JS错误吗?或者有人找到了解决办法吗 $(document).ready(function() { var scrpos=0; var limitTimer; var did= true; $('html, body, *').bind('mousewhee
$(document).ready(function() {
var scrpos=0;
var limitTimer;
var did= true;
$('html, body, *').bind('mousewheel', function(event,delta){
var BODY= this;
if (did){
did =false;
if (delta > 0) {
if (scrpos >= $(document).width() - $(window).width()){
}else{
scrpos += 100;
}
} else {
if (scrpos !== 0){
scrpos -= 100;
}
}
BODY.scrollLeft = scrpos;
console.log(scrpos);
var limitTimer = setTimeout(function(){
did=true;
clearTimeout(limitTimer);
}, 150);
}
//Works here when outside the call
//BODY.scrollLeft = scrpos;
});
});
你用什么浏览器来测试这个?还有,为什么要将事件分配给
html
,body
和所有(*
)呢?这个选择器让我害怕……我正在使用Chrome和FireFox。这一事件的原因是为了涵盖Firefox的滚动功能,因为Firefox不支持简单的html、body,这是一个已知的错误。因此,我正在使用(*)。limitTimer
可能存在范围问题。