$(window).scrollTop绑定到$(window).scroll()事件表现奇怪

时间:2011-09-29 13:01:17

标签: javascript jquery window scroll

我正在尝试在窗口滚动超过一定数量的像素时触发一个函数。

这是我的代码:

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

它有点工作,但是在功能被触发之前滚动后延迟大约2-4秒,否则根本不会触发功能。

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

3 个答案:

答案 0 :(得分:2)

它可以在OSX上的Chrome15 / Safari5.1 / FF7中使用jQuery 1.6.1 +鼠标滚轮/滚动条。你在这两个职能部门做什么?为了进行测试,我在someFunction中添加了一个简单的alert(),在someOtherFunction中没有任何内容。

请记住,每次滚动事件触发时都会执行其中一个函数,除非您在调用它时停止它...在100px行下方滚动后,someFunction会被调用很多。

John Resig:It's a very, very, bad idea to attach handlers to the window scroll event.

答案 1 :(得分:2)

代码看起来很好,适合我。

正如Wolfram所说,将处理程序直接附加到滚动事件上并不是一个好主意,因为这会触发批次并且可以使用户的系统爬行。

我建议使用Ben Alman's jquery throttle/debounce plugin

答案 2 :(得分:0)

如果您通过按住单击按钮而不是使用滚轮来骂,我相信在您释放单击按钮之前,事件不会触发。

您是否考虑过运行一个检查scrollTop的循环?

修改 我只是使用窗口滚动事件检查我的一个旧项目,并且它在同一事件中运行完美。

我认为你把这个脚本包裹在里面:

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