$(window).scroll()在页面加载时触发

Mil*_*uzz 7 javascript jquery events scroll jquery-events

有没有办法阻止$(window).scroll()在页面加载时触发?

在Firefox 4中测试以下代码,即使拔下鼠标,它也会触发.

jQuery(document).ready(function($){    
$(window).scroll(function(){
                console.log("Scroll Fired");
    });
});
Run Code Online (Sandbox Code Playgroud)

Wla*_*ant 10

scroll事件与鼠标无关,只要设置了新的文档滚动位置,就会调用该事件.并且可以说,当文档加载时设置位置(你可以用一个锚加载它),如果用户按下键盘上的光标键也是如此.我不知道为什么你需要忽略初始scroll事件,但我猜你只想做pageYOffset零,如果是零.这很简单:

var oldPageYOffset = 0;
$(window).scroll(function(){
  if (window.pageYOffset != oldPageYOffset)
  {
    oldPageYOffset = window.pageYOffset;
    console.log("Window scrolling changed");
  }
});
Run Code Online (Sandbox Code Playgroud)

注意:MSIE没有window.pageYOffset财产,因此需要调整上述内容.也许jQuery提供了跨浏览器的替代方案.

  • @Mild Fuzz:如果你解释你想要实现的目标而不是你想要实现什么,你会得到更好的答案.您认为忽略第一个滚动事件对您来说是最佳解决方案,但情况可能并非如此(如果您不提供更多信息则无法判断).无论哪种方式,如果你绝对想要忽略初始的`scroll`事件,你也可以用`window.pageYOffset`初始化`oldPageYOffset`. (3认同)

Mil*_*uzz 7

这是我去的解决方案.感激地收到了任何改进.

   var scroll = 0;
    $(window).scroll(function(){
                    if (scroll>0){
                    console.log("Scroll Fired");
                    }
                    scroll++;
    });
Run Code Online (Sandbox Code Playgroud)