【问题标题】:Find element where child items h2 text has a specific value查找子项 h2 文本具有特定值的元素
【发布时间】:2013-05-09 16:42:01
【问题描述】:

我认为这很简单,但我似乎找不到正确的选择器语法。我有这样的html:

<div class="parent">
    <h2>Summary</h2>
    <p>... bunch of content ...</p>
</div>
<div class="parent">
    <h2>Statistics</h2>
    <p>... bunch of content ...</p>
</div>
<div class="parent">
    <h2>Outcome</h2>
    <p>... bunch of content ...</p>
</div>

我想查找其 h2 子级包含文本“统计”的 div。

我尝试了以下各种组合:

$(".parent").find("h2[text='Statistics'").parent()

这不起作用,因为 find 返回一个空集。如果我这样做:

$(".parent").find("h2").text("Statistics").parent()

我得到了 3 个元素——所有这些元素似乎都是包含统计信息的 div。我可以添加 first() ,但这似乎有点恶心。找到该项目的正确语法是什么?

【问题讨论】:

  • .text() 用于设置文本,而不是您尝试使用的选择器或限制器。
  • @SetSailMedia 啊。那么这可以解释为什么它们都是一样的:)
  • :}} 下面来自@Joe 的好答案,或者您可以查看类似的问答:stackoverflow.com/questions/813477/…

标签: jquery jquery-selectors


【解决方案1】:

用途:

$(".parent").find("h2:contains('Statistics')").parent();

这使用:contains() 选择器。

【讨论】:

  • 这实际上不符合正确答案的条件。它在某些情况下会起作用,但问题是“查找子项 h2 文本具有特定值的元素”。此代码还将找到包含文本的 h2 元素。文本可以在开头、中间、结尾或全部。所以它不会找到其文本具有特定值的元素。
  • 这实际上是一个可行的解决方案:stackoverflow.com/a/33507307/6368401
【解决方案2】:
$(".parent").find("h2:contains('Statistics')").each(function(){
    var div=$(this).parent();
   // use div as you want
})

工作 http://jsfiddle.net/SayjQ/

【讨论】:

    【解决方案3】:

    如何使用 HAS

    $(".parent:has(h2:contains('Statistics'))")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-03-21
      • 1970-01-01
      • 2017-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多