【问题标题】:jQuery select based on text基于文本的jQuery选择
【发布时间】:2010-11-28 15:41:27
【问题描述】:

我需要根据 jQuery 中的文本选择一个元素。

例如:

<span>this text</span>

我知道我可以使用 .contains() 来根据文本进行选择,但这不是唯一的。

我不想选择:

<span>this text and that text</span>

如果它是元素的唯一文本,我想选择该元素。

除了使用正则表达式,我如何使用 jQuery 选择器做到这一点?

谢谢。

【问题讨论】:

    标签: jquery


    【解决方案1】:

    您对 :contains 选择器有一些影响力,但仅此而已。您将需要根据精确的文本匹配进一步修剪元素集,如下所示:

    $("span:contains(this text)")
    .filter
    (
      function()
      {
        return $(this).text() === "this text";
      }
    )
    

    这使得初始包含的使用在技术上是不必要的,但您可能会从较小的 SPAN 元素集合开始,然后过滤到您感兴趣的确切集合,从而获得性能优势。

    编辑:采纳 Ken Browning 的建议,在 filter 函数中使用 text() 函数而不是 innerHTML 进行字符串比较。这个想法是innerHTML 将捕获我们不特别感兴趣的文本(包括标记)。

    【讨论】:

    • 很好的答案,但为什么要使用innerHTML 而不是$(this).text()?不会使用innerHTML 要求他考虑条件包括必须编码的字符的情况(如 & -> &)
    • 为了挑剔,我给了你 +1 并在答案中推荐了!
    • @DavidAndres 除了innerHTML,您还可以使用innerText,它比.text() 更快并且不包含标记。
    猜你喜欢
    • 2011-11-06
    • 2012-12-06
    • 1970-01-01
    • 1970-01-01
    • 2014-08-30
    • 1970-01-01
    • 2014-05-12
    • 1970-01-01
    • 2011-08-08
    相关资源
    最近更新 更多