2014-09-10 36 views
1

我有一個元素在我的HTML屬性「測試」具有值「\」。 例如如何搜索屬性值爲「」的元素?

<e1> 
<e2 test="\"></e2> 
</e1> 

現在,當我做了查找來獲得要素如下: elem.find( '[值= 「\」]') 我獲得以下錯誤:

error: Syntax error, unrecognized expression: [value="\"] 

任何想法關於如何解決這個問題?

+2

閱讀有關特殊字符http://api.jquery.com/category/selectors/的文檔,您的示例中沒有「value」屬性 – epascarello 2014-09-10 20:00:39

回答

1

在文檔中它說你需要添加雙斜槓來逃避特殊字符。但是因爲\本身就是一個逃避角色,所以它需要翻倍。因此,您需要有4個斜槓才能匹配單斜槓。

$('[test="\\\\"]') 

而我在我的評論中提到,你沒有屬性值,它是測試。 jQuery documentation有一個需要轉義的選擇器中所有特殊字符的列表。

+0

那麼,我們如何概括這個屬性值呢?可以說屬性值是一個用戶輸入,因此它可以包含任何特殊字符以及正常字符。現在我怎麼能概括這種方法來正確搜索一個屬性值,而不管它是否包含特殊字符? – 2014-09-10 20:44:19

+0

你將不得不編寫一個函數,用一個轉義序列替換字符串中的特殊字符。 – epascarello 2014-09-10 22:49:47

1

通過@卡爾 - 安德烈·加格農更正:它應該是\\\\test=,不value=

$('e1').find('[test="\\\\"]'); 

Fiddle

+3

實際上應該是四倍:''[test =「\\\\ 「]'' – 2014-09-10 20:04:45

+0

答案是錯誤的。 \\不匹配一個\ – epascarello 2014-09-10 20:05:20

+2

@Regent,因爲第一個'\'轉義了第二個''''。當解析成正則表達式時,逃逸的'\'將會退出'''。 – 2014-09-10 20:07:17