【问题标题】:jQuery find() including current nodejQuery find() 包括当前节点
【发布时间】:2018-10-01 14:49:40
【问题描述】:

我想用 jQuery 的 find() 方法选择元素。此方法搜索节点的子节点,但它不包括我也想考虑的节点本身。在对this question 的回答中,他们建议这样做:

object.find('selector').addBack('selector')

这对我来说似乎是一个很好的解决方法,但不幸的是,这个解决方案不适用于每个选择器。假设我有一些节点

<div class="someClass">
  <div></div>
  <div class="someClass">
    <span></span>
  </div>
</div>

并且想要使用子选择器'.someClass &gt; *'(或影响当前节点及其后代的类似选择器)。我希望得到 2 个 div 元素和 span,但我显然只得到 span 元素。

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

【问题讨论】:

标签: javascript jquery jquery-selectors


【解决方案1】:

假设您不担心拾取同级元素,您可以从您开始使用的节点的父节点开始查询。这将确保有问题的节点包含在查询中。

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>

【讨论】:

  • 如果我没记错的话,这在使用子选择器 (>) 时也不起作用。
  • @Felix 你说得对,我错过了问题的那一部分。更新了我的答案以使用不同的方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-02
  • 2014-07-23
  • 2013-09-21
  • 2012-11-27
  • 2021-12-13
  • 2012-06-02
  • 1970-01-01
相关资源
最近更新 更多