我有这个选择器:
$('ul:not(.sub-menu) > li, ul.sub-menu > li:last-child').not(':has(ul.sub-menu)');
得到这些元素:
- 每个不是
li
父母的直系后代(除非它是最后一个,参见 2。).sub-menu
- an的最后一个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 选择器有关,但我似乎无法调试它:上面的代码选择了所有列表项而没有区别。