2

mouseenter/mouseleave イベントを要素 (単なる画像) にバインドし、次に 2 つの関数を実行します。私の問題は、最初のマウス入力で 2 つの関数のいずれかを 1 回だけ起動することです。

別名、最初のマウス入力では 2 つのことが起こり、2 番目のマウス入力では 1 つのことが起こります。

$(.bubbles).mouseenter(function(){
    functionSwapImage();                         //this should happen everytime
}).mouseleave(function(){
    functionSwapImageBack();                     //this should happen everytime
    $(".bubbles").one("mouseleave", function(){
        myFunction();                            //this should happen once!
    });
});

編集: http://jsfiddle.net/Am5ZC/

.one関数をそのブロックの外に移動し、独自の別のマウス エンター/リーブ ブロックに移動すると、functionSwapImageBack()一度だけ起動します (つまり、.one は両方のコード ブロックのイベントを削除します)。

これについてどうすればいいのかよくわかりませんが、助けてくれてありがとう!

4

2 に答える 2

1

これはうまくいくはずです:

$('.bubbles').one('mouseleave', myFunction)
.mouseenter(functionSwapImage)
.mouseleave(functionSwapImageBack);

mouseleaveまたはmouseenterイベントにバインドするかどうかわかりません。

更新: jQuery 1.7では正しく動作するように見えますが、 jQuery 1.7.1では動作しません。バグのようです。

于 2012-01-24T18:19:32.233 に答える
1

名前空間を持つ特定のイベント ハンドラーのみを削除する名前空間イベントを使用して、これを試してください。

$(".bubbles").mouseenter(function(){
    functionSwapImage();                         //this should happen everytime
}).mouseleave(function(){
    functionSwapImageBack();                     //this should happen everytime
}).one("mouseleave.onlyonce", function(){
    myFunction();                            //this should happen once!
});
于 2012-01-24T18:19:50.247 に答える