使用 JQuery 的 find 方法,如何根据“foo”的子元素的内容选择某个 HTML 元素“foo”的兄弟?

Posted

技术标签:

【中文标题】使用 JQuery 的 find 方法,如何根据“foo”的子元素的内容选择某个 HTML 元素“foo”的兄弟?【英文标题】:Using JQuery's find method, how do I select a sibling of some HTML element "foo", based on the content of a child of "foo"? 【发布时间】:2020-06-20 09:29:43 【问题描述】:

假设我有如下 html

<div class="foo-container">
  <div class="foo">
    <div class="foo-child">
      <span>The Important Label</span>
    </div>
  </div>
  <div class="elem-to-manipulate">
    <p>I want to manipulate the style in this because it's the sibling of "The Important Label"</p>
  </div>
</div>

我如何定位 p 元素,基于它的兄弟元素具有文本 The Important Label

我遇到了类似的事情

$('.root').find('.foo > .foo-child > span:contains("The Important Label")')

这成功地让我得到了span 元素。但是现在我如何在兄弟 div 中获取 p 元素?有没有办法告诉找到哪个父母得到兄弟姐妹?

【问题讨论】:

【参考方案1】:
$('.root').find('.foo:has(> .foo-child > span:contains("The Important Label")) + div > p')
aaa:has(bbb) 检查是否有任何匹配aaa bbb,然后才匹配aaa + 匹配先前匹配元素的以下兄弟

(根据您的用例,您可能对.foo:contains("The Important Label") + div &gt; p...感到满意)

【讨论】:

以上是关于使用 JQuery 的 find 方法,如何根据“foo”的子元素的内容选择某个 HTML 元素“foo”的兄弟?的主要内容,如果未能解决你的问题,请参考以下文章

如何显示隐藏在JQuery中使用nearest和find方法选择的元素?

如何使用 jQuery 选择文本节点?

form的jquery对象调用find方法找不到任何子元素

jQuery中find()方法的疑惑

jQuery简单实现iframe的高度根据页面内容自适应的方法(转)

如何使用 jquery 选择某些文本节点?