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

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

第一个代码段(使用div)无法使用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>



第二个片段(使用span)使用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>
  <span class="class-1">Div 1 Content</span>
  <br/>
  <span class="class-2">Div 2 Content</span>
</div>


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

最佳答案

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

从文档中:

关于javascript - 最近的()方法无法按预期工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41508008/

10-12 22:25