closest
あなたは(要素subnav
の祖先であるように)使用しているはずです.team
$(this).closest('subnav').css('display', 'none');
class
スタイルを定義する代わりに、を使用してスタイルを変更することをお勧めします。inline
.hide{
display: none;
}
特定のクラスを適用するには、クラスを追加するだけです。よりクリーンで散らかりません。
また、たどるリンクのデフォルト アクションを防止します。
$('a.team').click(function (e) {
e.preventDefault();
$(this).closest('.subnav').addClass('hide')
});
// This is to remove the hide class
// which has more specificity
$('.nav > li').mouseover(function (e) {
$('.subnav').removeClass('hide')
});
specificity
この例では問題が発生します。
inlineを設定display:none
すると、再度 inline を指定することによってのみオーバーライドできます。
代わりにクラスを使用してください。そして、同じ問題が再び発生します。しかし、より具体的なクラスを書くことで問題は解決するはずです。そして、CSS が機能するためには、以下のようになるはずです。
CSS
.nav > li .subnav {
display:none;
}
.nav > li:hover .subnav {
display:block;
}
.nav > li .hide.subnav{
display: none;
}