我想使用jQuery的find()
方法选择元素。此方法搜索节点的子级,但不包括我也要考虑的节点本身。在对this question的回答中,他们建议这样做:
object.find('selector').addBack('selector')
对我来说,这似乎是一个不错的解决方法,但不幸的是,此解决方案不适用于每个选择器。假设我有一些节点
<div class="someClass">
<div></div>
<div class="someClass">
<span></span>
</div>
</div>
,并希望使用子选择器'.someClass > *'
(或影响当前节点及其后代的类似选择器)。我希望得到2个div
元素和span
,但是我只能得到span元素。
有人知道解决方法或其他方法吗?
答案 0 :(得分:0)
假设您不担心拾取同级元素,则可以从开始的节点的父节点开始查询。这样可以确保所涉及的节点包含在查询中。
const selector = '.someClass > *';
let $node = $('body > .someClass');
let $matches = $node.parent().find(selector);
console.log($matches)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="someClass">
<div></div>
<div class="someClass">
<span></span>
</div>
</div>