jQuery基于文本选择

Jou*_*key 24 jquery

我需要在jQuery中根据文本选择一个元素.

例如:

<span>this text</span>
Run Code Online (Sandbox Code Playgroud)

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

我不想选择:

<span>this text and that text</span>
Run Code Online (Sandbox Code Playgroud)

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

除了使用正则表达式,我如何使用jQuery选择器?

谢谢.

Dav*_*res 34

你对:contains选择器有一些影响,但这只是到目前为止.您需要根据精确的文本匹配进一步减少元素集,如下所示:

$("span:contains(this text)")
.filter
(
  function()
  {
    return $(this).text() === "this text";
  }
)
Run Code Online (Sandbox Code Playgroud)

这使得初始包含在技术上不需要使用,但是在过滤到您感兴趣的确切集合之前,您可以通过开始使用较小的SPAN元素集合来体验性能优势.

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

  • 很好的答案,但为什么要使用`innerHTML`而不是`$(this).text()`?不会使用`innerHTML`要求他考虑标准包含必须编码的字符的情况(如& - >&amp;) (4认同)