我下面是一个示例,我不确定为什么第一个示例(使用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;
第二个代码段(使用span
&#39; s)使用closest()
获取文字
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;
我知道在这种情况下可以返回parents()/parent()/siblings()/nextAll()
文本的替代class-2
,但我只想知道这种行为会发生什么。
答案 0 :(得分:12)
因为.closest()
检查调用元素是否也适合选择器,并且在您的情况下.class-1
也是div
。
来自文档:
描述:对于集合中的每个元素,获取第一个元素 通过测试元素本身并遍历来匹配选择器 通过DOM树中的祖先。