私はこの機能を持っています:
function block_scroll(key){
if (key) {
$(window).bind("scroll", function(){
$('html, body').animate({scrollTop:0}, 'fast');
});
} else {
$(window).unbind();
}
}
最初の部分は正常に機能しますが、後でblock_scroll(false)を呼び出すと、まだブロックされています。ワット?
再編集だから私が試したように...
$(window).unbind("scroll");
...いくつかの混乱を伴います。最初は動作しませんでした-それから動作しました。
今、block_scroll(false)が呼び出された瞬間にスクロールしていたため、失敗したと思います。これを数回テストしました。そして、はい、スクリプトの実行中に何もせず、block_scroll(false)が呼び出された場合-それは動作します。しかし、呼び出されたときにスクロールしている場合はそうではありません。
$(window).unbind('scroll');
documentation は、引数なしで呼び出された場合、すべてのイベントハンドラーを削除することを示していますが、明示的にバインドを解除してみる価値があります。
一重引用符を使用するとうまくいきましたか?私の知る限り、JavaScriptは単一引用符と二重引用符を同じように扱います(PHP and C)のような他の言語とは異なります)。
unbind()
を使用することを示唆する回答は、 そのメソッドは廃止されました として古くなっており、jQueryの将来のバージョンでは削除されることに注意してください。
JQuery 3.0の時点で、.unbind()は推奨されていません。 jQuery 1.7以降、.off()メソッドに取って代わられたため、その使用は既に推奨されていません。
代わりに、off()
を使用する必要があります。
$(window).off('scroll');
必要がある:
unbind('scroll')
現時点では、バインド解除するイベントを指定していません。
これを試して:
$(window).unbind('scroll');
それは私のプロジェクトで動作します
非常に古い質問ですが、他の誰かがそれに出くわした場合には、試してみることをお勧めします:
$j("html, body").stop(true, true).animate({
scrollTop: $j('#main').offset().top
}, 300);