リンクは私が遭遇している問題の例です。要素にカーソルを合わせると、slidetoggle()が呼び出され、ドロップダウンリストが表示されます。ddlでオプションを選択しようとすると、slidetoggle()が再度呼び出され、ddlとトグルされた要素が強制的に折りたたまれます。
私が間違っていることについて何か考えはありますか?
*編集
インデントされた機能は、ユーザーがドロップダウンリストからオプションを選択し、その後、要素が自動的に切り替わるようにすることです。
リンクは私が遭遇している問題の例です。要素にカーソルを合わせると、slidetoggle()が呼び出され、ドロップダウンリストが表示されます。ddlでオプションを選択しようとすると、slidetoggle()が再度呼び出され、ddlとトグルされた要素が強制的に折りたたまれます。
私が間違っていることについて何か考えはありますか?
*編集
インデントされた機能は、ユーザーがドロップダウンリストからオプションを選択し、その後、要素が自動的に切り替わるようにすることです。
hover()メソッドには2つの署名があります。1つ目は2つのパラメーターを取ります。1つはマウスが要素に入ったときに呼び出される関数用で、もう1つは終了時に呼び出される関数用です。2番目のシグニチャは、enterイベントとexitイベントの両方に対して呼び出される単一の関数のみを取ります。現在の例では、ホバーエンターとホバーエグジットの両方に同じ関数を使用しています。これが、ドロップダウン要素が非表示になっている理由です。
最初のホバー後もドロップダウンを開いたままにしておきたい場合は、次の例があります。
少し複雑ですが、おそらく次のようなものです。
$(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);
}
});
});