美元(窗口).scrollTop与$(window).scroll()事件绑定

$(window).scrollTop tied to $(window).scroll() event acting oddly

本文关键字:事件 scroll 绑定 window 窗口 scrollTop 美元      更新时间:2023-09-26

我试图触发一个函数,当窗口滚动超过一定数量的像素

下面是我的代码:

$(window).scroll(function(){
  if( $(this).scrollTop() >= 100 ) {
    someFunction();
  } else {
    someOtherFunction();
  }
});

它有点工作,但是在函数(s)被触发之前滚动后大约有2-4秒的延迟,或者函数根本没有被触发。

在Safari/Chrome中试过了。不知道这是否有帮助!

代码看起来很好,可以正常工作。

正如Wolfram所说,将处理程序直接附加到scroll事件上很少是一个好主意,因为这会触发一个lot,并可能使用户的系统处于爬行状态。

我推荐使用Ben Alman的jquery throttle/debounce插件

它使用jQuery 1.6.1 +鼠标滚轮/滚动条在Chrome15/Safari5.1/FF7 OSX上工作。你在这两个函数中做了什么?为了进行测试,我在someFunction中放置了一个简单的alert(),而在someOtherFunction中没有放置任何内容。

请记住,这些函数中的一个在每次触发scroll-event时执行,除非你在它被调用时停止它…例如,当你滚动到100px线以下时,someFunction会被调用很多次。

John Resig:给窗口滚动事件附加处理程序是一个非常非常糟糕的主意。

如果你是按住点击按钮而不是使用滚轮滚动,我相信事件不会触发,直到你释放点击按钮。

你考虑过运行一个循环来检查scrollTop吗?

编辑:

我刚刚检查了我的一个旧项目使用窗口滚动事件,它运行完美与相同的事件。

我想你已经把你的脚本包在里面了:

$(function() {
   // code
});