0

我想用 jQuery 来

  • 检测用户是否滚动到页面顶部,并且
  • 在那里呆了一段时间。

我已经设法使用下面的代码获得第一点,但对第二点一无所知。

$(window).scroll(function() {
   if($(window).scrollTop()  == 0) {
   // do something
   }
});
4

4 回答 4

1

所以基本上你可以做一个 setTimeout,然后如果他们再次滚动就清除超时。例如:

var timer;

$(window).scroll(function() {
  if($(this).scrollTop() === 0) {
    timer = setTimeout( doSomething, 2000 );
  } else {
    clearTimeout(timer);
  }
});

var doSomething = function(){
  alert('I just sat at the top for two seconds!');
};

工作示例:http: //jsfiddle.net/dXRhb/2/

​</p>

于 2012-10-25T18:04:15.713 回答
1

如果用户向下滚动页面,则清除超时。否则它将在 1000 毫秒后调用函数(您可以根据您的要求进行设置)。

var c;
$(window).scroll(function() {
 if($(window).scrollTop()  == 0) {
    c = setTimeout(function(){
       // do stuff
     }, 1000);
 }
 else{
     clearTimeout(c);
  }
});
于 2012-10-25T18:04:31.500 回答
0
var myTimer; // Global variable

$(window).scroll(function() 
{
  if($(window).scrollTop()==0) 
  {
      myTimer = setTimeout(function() { 
          /* what you want to happen goes here */
      }, 
      1000) // Time in milliseconds
  } 
  else 
  {
    clearTimeout(myTimer);
  }
});
于 2012-10-25T18:02:31.780 回答
0

没有全局变量怎么办?

$(window).on('scroll', function() {
 if ($(this).scrollTop() === 0) {
    $(this).data('scrollTimer', 
        setTimeout(function(){
            // do stuff
        }, 1000)
    );
 }
 else{
     clearTimeout($(this).data('scrollTimer'));
  }
});
于 2012-10-25T18:19:00.487 回答