有了这个简单的设置

<div class="parent">
   <div class="child">I'm spoiled</div>
</div>
<div class="aunt"></div>
<div class="uncle"></div>

<div class="parent">
   <div class="child">I'm spoiled</div>
</div>
<div class="aunt"></div>
<div class="uncle"></div>


当我检测到对“叔叔”类的单击时,我想获得最接近的上一个“ .parent”的同级。我应该能够做

$( this ).prev( ".parent" ).children( ".child" ).text();


...但是这将返回一个空白。

如果我做

$( this ).prev().prev().children( ".child" ).text();


...这将返回预期的结果:“我被宠坏了”

我缺少prev([selector])的使用是否有一些限制?

[更新]

.prevAll()返回所有previuos类,因此

$( this ).prevAll( ".parent" ).children( ".child" ).text();


如果我单击第二个“ .uncle”,是否为“我宠坏了我宠坏了”,这不是我想要的结果。

我只需要最接近的前一个。

最佳答案

从jquery文档中:


.prev()说明:获取匹配元素集中每个元素的紧前同级元素,可以选择使用选择器进行过滤。


也:


若要选择所有前面的同级元素,而不仅仅是前面的相邻同级元素,请使用.prevAll()方法。


因此,您可以使用.prevAll()方法代替。
http://api.jquery.com/prev/

07-24 17:41