jquery – 选择元素,除非它有一个给定类的祖先只使用一个选择器

前端之家收集整理的这篇文章主要介绍了jquery – 选择元素,除非它有一个给定类的祖先只使用一个选择器前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
假设我有以下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>

我想选择不是类foo的元素的后代的所有li元素.我知道我可以做一个奇怪的filter function,但我想知道是否可以做一个选择器.首先我试过:

$(":not(.foo) li")

不幸的是,这不起作用,因为李没有其他祖先没有风格(在这种情况下是ul).以下似乎工作;

$(":not(.foo) :not(.foo) li")

换句话说,选择所有没有祖先的所有的li元素,既没有类foo,也没有拥有自己的祖先类foo.也许这是使用选择器来做最好的/唯一的方法,但是我并不感到非常重视:not selector.有什么更好的想法吗?

fiddle

解决方法

你可以这样做
$("li").not('.foo li')

http://jsfiddle.net/y7s54/

要么

$("li:not(.foo li)")

http://jsfiddle.net/QpCYY/

选择没有类foo的祖先的所有li

猜你在找的jQuery相关文章