nearest()方法无法按预期工作

时间:2017-01-06 14:41:53

标签: javascript jquery html parent closest

我下面是一个示例,我不确定为什么第一个示例(使用div' s)在第二个示例时没有得到文本(使用span' s)可以使用 closest() 使用相同的JS代码实现这一目标:

$('.class-1').closest('div').find('.class-2').text()

第一个代码段(使用div' s)无法使用closest()获取文字:



console.log( $('.class-1').closest('div').find('.class-2').text() );

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
  <div class="class-1">Div 1 Content</div>
  <div class="class-2">Div 2 Content</div>
</div>
&#13;
&#13;
&#13;

第二个代码段(使用span&#39; s)使用closest()获取文字

&#13;
&#13;
console.log( $('.class-1').closest('div').find('.class-2').text() );
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
  <span class="class-1">Div 1 Content</span>
  <br/>
  <span class="class-2">Div 2 Content</span>
</div>
&#13;
&#13;
&#13;

我知道在这种情况下可以返回parents()/parent()/siblings()/nextAll()文本的替代class-2,但我只想知道这种行为会发生什么。

1 个答案:

答案 0 :(得分:12)

因为.closest()检查调用元素是否也适合选择器,并且在您的情况下.class-1也是div

来自文档:

  

描述:对于集合中的每个元素,获取第一个元素   通过测试元素本身并遍历来匹配选择器   通过DOM树中的祖先。