0

ホバーアウトした後でマウスオーバーのバインドを解除または無効にしてから、他のボックスがフェードアウトした場合は再度有効にするにはどうすればよいですか。

バインド解除を試しましたが、機能していないようで、すべてが無効になっています。

タイムアウトを試しましたが、それは私の利点にはなりません。

助けていただければ幸いです、ありがとう

$("#shopping_basket").mouseover(function() { 
            // set a timeout so that this event will not trigger twice when mouseover from the bottom
            setTimeout(function() {
                /*$("#shopping_basket").unbind(mouseover);*/
                $("#miniBasketDetails").fadeIn(500);
            },500);
            });     
        $("#miniBasketDetails").mouseleave(function() { $("#miniBasketDetails").fadeOut(500); });
4

2 に答える 2

2

推測では、次のようなものを試してください。

$("#shopping_basket").bind('mouseover', function() {
  setTimeout(function() {
    $("#shopping_basket").unbind('mouseover');
    $("#miniBasketDetails").fadeIn(500);
  }, 500);

 //Re-enable as needed: $("#shopping_basket").bind('mouseover', function(){});
});

このコードはテストされていませんが、機能するはずです。

あなたの問題は、文字列ではなく変数として渡さmouseoverれたことだと思います。.unbind()これが、JavaScriptが定義されていないという名前の変数を探していてmouseover、コードが壊れたために、「すべて」が無効にされた理由です。次のようにしてみてください.unbind('mouseover')

于 2012-08-06T16:38:54.467 に答える
0

これがあなたが探しているアルゴリズムであるかどうかはわかりませんが、この質問に示されている回答に基づいています
これがフィドルとコードです

$("#shopping_basket").hover(function() {
    $("#miniBasketDetails").fadeIn(500);
}, function() {
    $("#miniBasketDetails").data('is_over', false);
    setTimeout(function() {
        if (!$('#miniBasketDetails').data('is_over')) {
            //if not hovered over the #miniBasketDetails in 650 miliseconds after mouseleave
            $("#miniBasketDetails").fadeOut(500);
        }
    }, 650);
});

$("#miniBasketDetails").mouseenter(function() {
    $(this).data('is_over', true);
});

$('#miniBasketClose').click(function() {
    $("#miniBasketDetails").fadeOut(500, function() {
        $(this).data('is_over', false);
    });
});

これspan#miniBasketCloseはオプションの「閉じるボタン」の1つであり、コードの機能には必要ありません。その機能は、(必要に応じて)他の要素にカーソルを合わせるなどして置き換えることができます。

于 2012-08-06T20:18:19.883 に答える