我在下面有一个示例示例,我不确定为什么第一个示例(使用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/