関数が再度実行を試みる前に、関数の実行が終了するのを待っている問題
-
03-07-2019 - |
質問
$(window).scroll();を使用していますユーザーが上部または下部にスクロールしすぎたときに呼び出す関数を指定します。
この関数は実行に2秒かかります。スクロールを続けた場合、最初の関数が完了する前に複数回実行されます。
関数の実行を開始し、その関数を再度実行する前に待機する必要があることを$(window).scroll()関数に伝える方法はありますか?
解決
すでにスクロール位置を確認しているブール値を設定できます:
checkingPosition = false;
$window.scroll(function() {
if(checkingPosition) return;
checkingPosition = true;
//do stuff
checkingPosition = false;
});
他のヒント
データをオブジェクトにカプセル化することにより、スコープの問題/混乱を避けるためにこのようなことをします...この場合、jQueryオブジェクト(ウィンドウ要素上):
$(function() {
$(window).data('checking_scroll',false);
$(window).scroll(function() {
if($(this).scrollTop() >= 200 /* or whatever... */) {
if($(this).data('checking_scroll') === true) {
return false;
} else {
whatever_function();
}
}
});
});
function whatever_function() {
$(window).data('checking_scroll',true);
// do all your stuff...
$(window).data('checking_scroll',false);
}
...しかし、それは私だけです。
所属していません StackOverflow