Jquery 将窗口滚动功能简化为简单的if语句
如果scrollTop位置超过800px,我希望能够触发一个事件。我们都知道这可以通过在窗口滚动函数中包装if语句来实现,就像这样Jquery 将窗口滚动功能简化为简单的if语句,jquery,scrolltop,Jquery,Scrolltop,如果scrollTop位置超过800px,我希望能够触发一个事件。我们都知道这可以通过在窗口滚动函数中包装if语句来实现,就像这样 $(window).scroll(function () { if ($(this).scrollTop() > 800) { // do something } }); 我可以在不将其绑定到窗口滚动功能的情况下执行此操作吗 我试过这个,但不起作用:
$(window).scroll(function () {
if ($(this).scrollTop() > 800) {
// do something
}
});
我可以在不将其绑定到窗口滚动功能的情况下执行此操作吗
我试过这个,但不起作用:
if ($(window).scrollTop() > 800) {
// just do it
}
好吧,温柔一点。除非你从其他东西,点击处理程序或其他东西调用它,否则你真的不能 有什么原因不想绑定到滚动事件吗 编辑:: 为了完整性起见,这里有另一种cpu占用较少的方法,只需使用时间戳
var dt = new Date();
$(window).scroll(function(){
var now = new Date();
if(now - dt < 1000) return; //1000 === 1 second
//do stuff
dt = now;
});
var dt=新日期();
$(窗口)。滚动(函数(){
var now=新日期();
如果(现在-dt<1000)返回;//1000==1秒
//做事
dt=现在;
});
不,您不能。需要知道窗口正在滚动。这是$(窗口)。scroll处理程序$(窗口)。scroll()
是一个事件处理程序-这是事件发生时发生的事情。在这种情况下,您说的是“在滚动窗口时运行此代码”。如果没有这一点,if语句将只执行一次,并且在页面的整个生命周期内不会再次执行。好吧,我已经读到,它是一个内存/CPU占用器,首先,我希望某些东西只执行一次。@Archer,好的,Bam,谢谢你提醒我。我将它绑定到.one('scroll',function(){上,这就解决了我一半的问题。尽管如此,还是有另一种说法:“如果用户在某个地方的页面下方超过800px,那么就这样做。”否-您所做的只是在用户第一次滚动时运行if语句,而不管他们滚动多少次。如果他们滚动一点点,然后再滚动很多次,代码将不会第二次运行。