jquery $(this).prev(".class")不起作用

Ped*_*dro 1 jquery jquery-selectors

鉴于这个简单的设置

<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>
Run Code Online (Sandbox Code Playgroud)

当我在类"叔叔"上发现点击时,我想得到最近的".parent"的兄弟姐妹.我应该可以做到

$( this ).prev( ".parent" ).children( ".child" ).text();
Run Code Online (Sandbox Code Playgroud)

...但是这会返回一个空白.

如果我做

$( this ).prev().prev().children( ".child" ).text();
Run Code Online (Sandbox Code Playgroud)

...这会返回预期的结果:"我被宠坏了"

使用prev([选择器])是否有一些限制?

[UPDATE]

.prevAll()返回所有previuos类,因此得到的结果

$( this ).prevAll( ".parent" ).children( ".child" ).text();
Run Code Online (Sandbox Code Playgroud)

如果我点击第二个".uncle","我被宠坏了,我被宠坏了",这不是我想要的结果.

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

Geo*_*rge 10

从jquery文档:

.prev()描述:获取匹配元素集中每个元素的前一个兄弟,可选择由选择器过滤.

也:

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

所以,你去,使用.prevAll()方法. http://api.jquery.com/prev/

  • 使用 $( this ).prevAll( ".parent:first" ).children( ".child" ).text(); (2认同)