假设我有以下HTML:
<div class="foo"> <ul> <li>One</li> <li>Two</li> </ul> </div> <!-- not originally here --> <div class="bar"> <ul> <li>Three</li> <li>Four</li> </ul> </div>@H_301_4@我想选择不是类foo的元素的后代的所有li元素.我知道我可以做一个奇怪的filter function,但我想知道是否可以做一个选择器.首先我试过:
$(":not(.foo) li")@H_301_4@不幸的是,这不起作用,因为李没有其他祖先没有风格(在这种情况下是ul).以下似乎工作;
$(":not(.foo) :not(.foo) li")@H_301_4@换句话说,选择所有没有祖先的所有的li元素,既没有类foo,也没有拥有自己的祖先类foo.也许这是使用选择器来做最好的/唯一的方法,但是我并不感到非常重视:not selector.有什么更好的想法吗? @H_301_4@fiddle
解决方法
你可以这样做
$("li").not('.foo li')@H_301_4@http://jsfiddle.net/y7s54/ @H_301_4@要么
$("li:not(.foo li)")@H_301_4@http://jsfiddle.net/QpCYY/ @H_301_4@选择没有类foo的祖先的所有li