0

以下のコードは基本的に私がやりたいことですが、間違ったコードであると理解しています。

したがって、ドロップダウンメニューの場合は、少し遅れて非表示にします。問題は、hide-delayが終了する前に別のメニュー項目にカーソルを合わせると、次の項目が上書きされることhandlerInです。

setTimeoutでは、次のキューをクリアする簡単な方法はありますhover()か?

繰り返しますが、以下の誤ったコードは説明のためだけのものです。

$('nav > ul > li').hover(function() {
    clearTimeout(menuHide);
    $(this).find('ul').show();
}, function() {
    var menuHide = setTimeout(function() {
        $(this).find('ul').hide();
    }, 150);
});

更新:clearInterval()私はそれを中止するのではなく、それを完了させたいので、私が探しているものではないようです。

completeInterval()万が一ありますか?:)

4

2 に答える 2

1

現在、ホバーイベントには参照がないmenuHideため、事前に宣言する必要があります。

var menuHide;

$('nav > ul > li').hover(function() {
    clearTimeout(menuHide);
    $(this).find('ul').show();
}, function() {
    menuHide = setTimeout(function() {
        $(this).find('ul').hide();
    }, 150);
});

編集

コメントセクションでのコラボレーションの結果、メソッドの完全な部分にコードを配置することがanimate方法であると判断しました。

.animate( properties [, duration ] [, easing ] [, complete ] )

于 2013-02-06T22:03:59.417 に答える
0

グローバルmenuHide変数を作成します。

于 2013-02-06T22:01:29.200 に答える