【发布时间】:2013-10-13 15:37:51
【问题描述】:
鉴于此 HTML 结构
<div class="item">
<div class="item">
select me
<div class="item">don't select me</div>
</div>
<span>
<div class="item">select me</div>
</span>
</div>
还有这个 jQuery:
var firstItem = $('.item:first');
var selector = firstItem.find('.item');
selector.css('color', 'red');
我正在寻找一种方法来仅标记 firstItem div 中未嵌套的 .item 元素。这里棘手的部分是 firstItem 本身已经(或可以)嵌套在 .item 类中。
我尝试了什么?
firstItem.find('.item').not('.item .item')
这不起作用,因为我们开始的第一个级别已经是一个 .item 类。这已经可以嵌套 x 次,所以它可以是 .item .item .item .item 或其他。而且起始元素没有 ID,所以我也不能在选择器中使用它。
我认为解决方案应该类似于逆向的.closest(),它沿着 DOM 传播并且不搜索已找到项目的内容。
在这里准备了一个 jsFiddle:http://jsfiddle.net/LWmy3/2/
【问题讨论】:
-
Maaaaybe 这个? .parentsUntil()
-
在这种情况下你会如何使用 .parentsUntil?
-
拜托,你不能添加单独的类来提高能力
-
@CoolGadgetsForGeeks 我添加了一个带有
parentsUntil()的演示,不过需要一个额外的类:D