2013-05-02 55 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