49

私はこの機能を持っています:

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)が呼び出された場合、それは機能します。しかし、呼び出されたときにスクロールしている場合はそうではありません。

4

6 に答える 6

75
$(window).unbind('scroll');

ドキュメントには、引数なしで呼び出された場合はすべてのイベントハンドラーが削除されると記載されていますが、明示的にバインドを解除してみる価値があります。

アップデート

一重引用符を使用した場合は機能しましたか?それは正しく聞こえません-私が知る限り、JavaScriptは一重引用符と二重引用符を同じように扱います(PHPやCなどの他の言語とは異なります)。

于 2010-11-11T13:39:56.503 に答える
2

代わりにこれを試してください

$.unbind('scroll');

http://api.jquery.com/unbind/

于 2010-11-11T13:40:05.730 に答える
2

これを試して:

$(window).unbind('scroll');

それは私のプロジェクトで動作します

于 2013-02-27T07:12:23.797 に答える
1

必要がある:

unbind('scroll')

現時点では、バインドを解除するイベントを指定していません。

于 2010-11-11T13:40:19.687 に答える
0

非常に古い質問ですが、他の誰かがそれに出くわした場合に備えて、試してみることをお勧めします:

$j("html, body").stop(true, true).animate({
        scrollTop: $j('#main').offset().top 
}, 300);
于 2013-04-24T08:21:39.160 に答える