使用方法:包含(文本)任何带有jQuery的文本

时间:2011-04-30 16:46:46

标签: javascript jquery jquery-selectors

使用jQuery,可以使用:

$(":contains(hello)")

它将返回包含文本“hello”的任何匹配元素。

我希望能够匹配任何文本,特别是“你好:)”。

$(":contains(hello :))") // Doesn't work
$(":contains('hello :)')") // Doesn't work
$(":contains('hello :\)')") // Doesn't work

如何使用jQuery找到包含“hello :)”的元素?

4 个答案:

答案 0 :(得分:4)

请参阅this answer了解具体方法。

它基本上涉及.filter来解决a known :contains bug

$('#demo').filter(function(i, el) {
    return !!$(el).text().match(/hello :\)/);
});

直播example

请注意,对此结果执行.length可能会为您提供大于 1的值,即使只有一个元素包含该文本,因为该元素的父元素也会匹配。

答案 1 :(得分:1)

这似乎是一个开放的错误:http://bugs.jquery.com/ticket/5482

还有statement的jakkob:

  

我还发现错误只是来了   如果支架位于最后   contains-expression。

答案 2 :(得分:0)

来自jQuery的

  

如果你想使用任何元字符(例如!“#$%&'()* +,。/:;< =>?@ [] ^`{|}〜)作为名称的文字部分,您必须使用两个反斜杠转义字符:\\

所以试试这个

$(":contains('hello \\:\\)')")

答案 3 :(得分:0)

快速代码:

jQuery.fn.contains = function(re) {
  return this.filter(function(i, el) {
    return !$(el).text().match(RegExp(re));
  });
};

这样你就可以:

$("*").contains(":\\)") // returns all elements in the page that contains ':)'

注意:contains()接受一个正则表达式(意味着你需要转义任何需要为regexp转义的内容)