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插件的种类 1、封装对象方法 这种插件是将对象方法封装起来,用于对通过选择器获取的jQuery对象进...
扩展jQuery插件和方法的作用是非常强大的,它可以节省大量开发时间。 入门 编写一个jQuery插件开始于给...
最近项目中需要实现3D图片层叠旋转木马切换的效果,于是用到了jquery.roundabout.js。 兼容性如图: ht...
一、什么是deferred对象? 开发网站的过程中,我们经常遇到某些耗时很长的javascript操作。其中,既有异...
AMD 模块 AMD(异步模块定义,Asynchronous Module Definition)格式总体的目标是为现在的开发者提供一...