jQuery find()包括当前节点

时间:2018-10-01 14:49:40

标签: javascript jquery jquery-selectors

我想使用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元素。

有人知道解决方法或其他方法吗?

1 个答案:

答案 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>