0

jQueryを使いたい

  • ユーザーがページの一番上までスクロールしたかどうかを検出し、
  • 一定期間そこにとどまります。

以下のコードを使用して最初のポイントを取得することができましたが、2番目についての手がかりがありません。

$(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 に答える