jqueryを使用してWebサイトの単純なサイドバーを作成しようとしていますが、ホバー機能に問題があります。ユーザーがカテゴリにカーソルを合わせると、サブメニューが表示されるはずです。上または下のカテゴリにカーソルを合わせると、サブメニューを閉じたいのですが。問題と、サブメニューが正常に閉じないことを示すためにjsFiddleを作成しました。私はこれを何時間も理解しようとしてきました、私はこれでどんな助けでも大いに感謝します。
ありがとうございました。
jqueryを使用してWebサイトの単純なサイドバーを作成しようとしていますが、ホバー機能に問題があります。ユーザーがカテゴリにカーソルを合わせると、サブメニューが表示されるはずです。上または下のカテゴリにカーソルを合わせると、サブメニューを閉じたいのですが。問題と、サブメニューが正常に閉じないことを示すためにjsFiddleを作成しました。私はこれを何時間も理解しようとしてきました、私はこれでどんな助けでも大いに感謝します。
ありがとうございました。
mouseleave関数でサブメントを非表示にするのを忘れました。$(this).find(".submenu").hide();
既存のハンドラーに追加するだけです。
$(".category").mouseleave(function() {
$(this).find(".submenu").hide();
$(this).css("background-color", "#eee");
$(this).css("border", "1px solid grey");
$(this).css("border-bottom", "none");
$(this).css("width", "180px");
$(".category:last").css("border-bottom", "1px solid grey");
});
http://jsfiddle.net/ahren/BGcDc/8/
$(".submenu").hide();
ホバーの開始時にを追加するだけです。
あなたはリストを隠すのを忘れました
$(".category").mouseleave(function() {
$(this).find(".submenu").hide();
})
しかし、これはcssのみの生地で達成できます。
.category .submenu{ display:none}
.category:hover .submenu{ display:block}
そして、そこに到達したすべての.css()境界線を削除します(さらに意味がありますが、クロスブラウザーアニメーションを作成して表示/非表示にする場合は意味があります)
次のようにJavaScriptを変更するだけです。
$(".category").mouseleave(function() {
// add this
$(".submenu").hide();
$(this).css("background-color", "#eee");
$(this).css("border", "1px solid grey");
$(this).css("border-bottom", "none");
$(this).css("width", "180px");
$(".category:last").css("border-bottom", "1px solid grey");
});