下面有一个示例,我不知道为什么第一个示例(使用div)不能获得文本,而第二个示例(使用span)可以使用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>
第二段代码段(使用span**'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>
<span class="class-1">Div 1 Content</span>
<br/>
<span class="class-2">Div 2 Content</span>
</div>
我知道在本例中可以返回class-2文本的替代class-2,但我只想知道这种行为发生了什么。
发布于 2017-01-06 14:43:58
因为.closest()检查调用元素是否也适合选择器,在您的示例中,.class-1也是一个div。
从医生那里:
描述:对于集合中的每个元素,通过测试元素本身并在DOM树中遍历其祖先,获得与选择器匹配的第一个元素。
https://stackoverflow.com/questions/41508008
复制相似问题