使用jQuery,可以使用:
$(":contains(hello)")
它将返回包含文本“hello”的任何匹配元素。
我希望能够匹配任何文本,特别是“你好:)”。
$(":contains(hello :))") // Doesn't work
$(":contains('hello :)')") // Doesn't work
$(":contains('hello :\)')") // Doesn't work
如何使用jQuery找到包含“hello :)”的元素?
答案 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)
:
如果你想使用任何元字符(例如!“#$%&'()* +,。/:;< =>?@ [] ^`{|}〜)作为名称的文字部分,您必须使用两个反斜杠转义字符:\\
所以试试这个
$(":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转义的内容)