2013-05-02 63 views
1

我有点麻烦,使用jQuery包含选择器;jQuery包含选择器和特殊字符

考虑下面的html和jquery来检查一个元素是否包含某些文本。

例如 HTML:

<div>welcome :)</div> 

的jQuery的Javascript:

$('div:contains("welcome :)")').length 

如果我运行该HTML上面的JS代码。它不会返回1,因为它应该。

但是下面的作品如预期

$('div:contains("welcome")').length 

任何建议如何适应特殊字符,如括号或结肠等?

+0

非REPRO http://jsfiddle.net/FNrQX/ – 2013-05-02 03:04:23

+0

的[jQuery选择值逸出]可能重复(HTTP ://stackoverflow.com/questions/739695/jquery-selector-value-escaping) – pickypg 2013-05-02 03:04:51

+1

@FabrícioMatté它打破了jQuery 1.7.2 – Dennis 2013-05-02 03:06:29

回答

2

我想这可能是因为JQuery选择器中使用的转义字符。您可以在转义字符(如':')之前使用'\'字符来解决问题。也可以使用下面的一般方法功能。

function jqescape(str) { return str.replace(/[#;&,\.\+\*~':"!\^\$\[\]\(\)=>|\/\\]/g, '\\$&'); } 

我试图下面表达它给我导致如预期:

$('div:contains("welcome \:")').length 
+0

这不是什么OP要求;问题是你在答案中忽略的'contains'过滤器中的''''。 – Dennis 2013-05-03 02:03:40

+0

我认为这是JQuery包含方法中的一个错误。我尝试过,但它与最后一个开括号相配对),这就是为什么它不能识别相同。 – Prashant 2013-05-03 03:03:40