1

私は次のコードを持っています:

$('body').mousemove(function() {
    $('#covering').fadeOut(500);
    $('.block div div').fadeOut(250)
    $('.block div div').css('margin-top','160px')
    $('.block div div').fadeIn(250);
});

基本的に私がやろうとしているのは、(この質問のように)「カバー」divをフェードアウトさせ、いくつかのブロック要素の内側のdivをフェードアウトさせ、静かに移動させ、フェードインさせてシームレスな効果を実現することです。

ただし、これを実行すると、マウスを動かすたびに、上記のすべてが実行されます。これは私が望んでいることではなく(一度だけ発生させたいのですが、それだけです)、ブラウザの速度が低下し、スタックアップが発生する可能性があるため、問題が発生します。

一度実行すると実行を停止する方法をどこかで読んだと思いますが、思い出せないので、それを行う方法もありますか?ありがとう。

4

2 に答える 2

9
$('body').one('mousemove', function() {
        $('#covering').fadeOut(500);
        $('.block div div').fadeOut(250)
        $('.block div div').css('margin-top','160px')
        $('.block div div').fadeIn(250);
});

詳細:http ://docs.jquery.com/Events/one

于 2009-06-28T21:22:46.877 に答える
1

Oneイベントをお試しください。述べたように、それは次の機能を持っています:

ハンドラーを1つ以上のイベントにバインドして、一致した要素ごとに1回実行します。

これがあなたが探しているものだと思います。これは、1つのイベントを使用して上記で使用したコードの例です。

$('body').one("mousemove", function() {
    $('#covering').fadeOut(500);
    $('.block div div').fadeOut(250)
    $('.block div div').css('margin-top','160px')
    $('.block div div').fadeIn(250);
});
于 2009-06-28T21:24:53.363 に答える