jQuery Selectors - where item does not have childr

2020-04-02 09:20发布

I want to select list items that are immediate children of #nav, that do not themselves have immediate children with an 'active' class.

This is what I think it should be but it does not work:

$('#nav > li:not(> a.active)')

4条回答
2楼-- · 2020-04-02 10:03

This is how you do it:

    $('#nav > li:not(:has(a.active))')
查看更多
欢心
3楼-- · 2020-04-02 10:07

I really like Ken's solution, but just for an alternative take.

You could add the active class to your list items instead of your links inside. Then your selector could look like:

$("ul#nav li:not(.active)");

If you want to style the links based on the active class, your CSS could look like this:

#nav li.active a{background-color:red;}
查看更多
疯言疯语
4楼-- · 2020-04-02 10:13

You'll need to use jQuery's filter function:

$('#nav > li').filter(function() { return !($(this).children().is('.active')); })
查看更多
戒情不戒烟
5楼-- · 2020-04-02 10:23

For this jquery has the not selector

you can do something like

$("#nav > li").children(":not(.active)");
查看更多
登录 后发表回答