私はこのセレクターを持っています:
$('ul:not(.sub-menu) > li, ul.sub-menu > li:last-child').not(':has(ul.sub-menu)');
これらの要素を取得します:
li
親がそうでない すべての直接の子孫.sub-menu
(それが最後でない限り、2を参照)。- の最後のすべてのli要素
ul.sub-menu
li
親であるすべてのを除外しますul.sub-menu
ここで、これをホバー関数内のifステートメントで使用します。つまり、リストアイテムではなく、そのリストアイテムに関連している必要があります。
このようなもの:
$("nav li").hover(function () {
var $this = $(this);
if (($this.parent("ul:not(.sub-menu)") || ($this.parent("ul.sub-menu") && $this.is(":last-child"))) && $this.not(":has(ul.sub-menu)")) {
// do something
}
});
しかし、これは機能しません。ifステートメント内でORセレクターとANDセレクターを組み合わせることに関係があると思いますが、デバッグできないようです。上記のコードは、区別なくすべてのリストアイテムを選択します。