1

私はマウスオーバーとマウスアウトを持っています。ここでは、マウスオーバーでいくつかのdivを非表示/表示してから、マウスアウトで非表示/表示を逆にします。動作しますが、マウスを移動しているDivの上にマウスをすばやく移動して、divを表示すると、約3回前後に移動し、表示と非表示が表示されます。私は何が欠けていますか?

$("TABLE.tbl-graphs DIV.util").mouseover(
    function(){
        $("DIV.pic-container, DIV.util-info").hide("slow");
        $("DIV.util-description").show("slow");
    });
$("TABLE.tbl-graphs DIV.util").mouseout(
    function(){
        $("DIV.pic-container, DIV.util-info").show("slow");
        $("DIV.util-description").hide("slow");
    });
4

4 に答える 4

2

または.stop()を呼び出す前に使用します。おそらくandも使用したいでしょう- 違いはイベントバブリングにあります。.show().hide()mouseentermouseleave

これを試着してサイズを確認してください:

var $divs = $("div.pic-container, div.util-info, div.util-description");

$("table.tbl-graphs div.util").live('mouseenter mouseleave'
function() {
    $divs.stop().toggle("slow");
});

<div>これが機能するには、表示/非表示にする が正しい初期状態である必要があることに注意してください。

于 2011-04-13T18:16:52.033 に答える
0

アニメーションのキューイングを防ぐには、.stop(true、true)を試してください。 http://api.jquery.com/stop/

.hover(handlerIn、handlerOut)もチェックアウトすることをお勧めします。http://api.jquery.com/hover/#hover1

于 2011-04-13T18:20:55.447 に答える
0

この問題を解決する一般的な方法は、単純なフラグを使用することです。たとえば、現在何かを実行している場合、マウス リクエストを無視します。

if(flag) return;
flag = true

次に、 flag = false のコールバックを関数に追加します

于 2011-04-13T18:15:24.967 に答える
0

デキューを探していると思います: http://api.jquery.com/dequeue/

これは、キューに入れられたイベントを許可しません (例: div の上にカーソルを置いて、フェードインとフェードアウトを 3 回行い、1 回だけ)

于 2011-04-13T18:14:06.363 に答える