jQueryを使いたい
- ユーザーがページの一番上までスクロールしたかどうかを検出し、
- 一定期間そこにとどまります。
以下のコードを使用して最初のポイントを取得することができましたが、2番目についての手がかりがありません。
$(window).scroll(function() {
if($(window).scrollTop() == 0) {
// do something
}
});
したがって、基本的には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>
ユーザーがページをスクロールダウンした場合、タイムアウトをクリアします。それ以外の場合は、1000 ミリ秒後に関数が呼び出されます (要件に基づいて設定できます)。
var c;
$(window).scroll(function() {
if($(window).scrollTop() == 0) {
c = setTimeout(function(){
// do stuff
}, 1000);
}
else{
clearTimeout(c);
}
});
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);
}
});
グローバルなしでそれを行うのはどうですか?
$(window).on('scroll', function() {
if ($(this).scrollTop() === 0) {
$(this).data('scrollTimer',
setTimeout(function(){
// do stuff
}, 1000)
);
}
else{
clearTimeout($(this).data('scrollTimer'));
}
});