0

http://jsfiddle.net/EhTJF/

リンクは私が遭遇している問題の例です。要素にカーソルを合わせると、slidetoggle()が呼び出され、ドロップダウンリストが表示されます。ddlでオプションを選択しようとすると、slidetoggle()が再度呼び出され、ddlとトグルされた要素が強制的に折りたたまれます。

私が間違っていることについて何か考えはありますか?

*編集

インデントされた機能は、ユーザーがドロップダウンリストからオプションを選択し、その後、要素が自動的に切り替わるようにすることです。

4

2 に答える 2

0

hover()メソッドには2つの署名があります。1つ目は2つのパラメーターを取ります。1つはマウスが要素に入ったときに呼び出される関数用で、もう1つは終了時に呼び出される関数用です。2番目のシグニチャは、enterイベントとexitイベントの両方に対して呼び出される単一の関数のみを取ります。現在の例では、ホバーエンターとホバーエグジットの両方に同じ関数を使用しています。これが、ドロップダウン要素が非表示になっている理由です。

http://api.jquery.com/hover/

最初のホバー後もドロップダウンを開いたままにしておきたい場合は、次の例があります。

http://jsfiddle.net/gwZbj/4/

于 2012-07-23T19:29:28.293 に答える
0

少し複雑ですが、おそらく次のようなものです。

$(document).ready(function () {
    var timer;
    $('.dropdown').on({
        mouseenter: function () {
            var elm = $(this).find('.sub_navigation');
            if (!elm.is(':visible')) {
                elm.slideDown(100);
            }else{
                clearTimeout(timer);
            }
        },
        mouseleave: function() {
            var elm = $(this).find('.sub_navigation');
            timer = setTimeout(function() {
                elm.slideUp(100);
            }, 300);
        }
    });
});​

フィドル

于 2012-07-23T19:40:15.787 に答える