我在下面有一个示例,我不知道为什么第一个例子(使用div)没有得到文本,而第二个(使用span)可以使用
closest()
使用相同的JS代码实现该文本:
$('.class-1').closest('div').find('.class-2').text()
第一个片段(使用div)无法使用nearest()获取文本:
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)使用nearest()获取文本:
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>
我知道在这种情况下可以返回class-2文本的替代parent()/ parent()/ siblings()/ nextAll(),但我只想知道这种行为会发生什么.
解决方法
因为
.closest()
检查调用元素是否也适合选择器,在你的情况下.class-1也是一个div.
来自文档:
Description: For each element in the set,get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree.