2013-11-04 25 views
0

我有HTMLjQuery選擇用斜槓

<a href="#" data-ext="sql" rel="\dir\file.sql" id="file">file.sql</a> 

,我想找到這個a#file等由rel,所以

$("#file[rel='\dir\file.sql']") 

不工作,因爲\刪除(爲什麼?)

var some_var = "/s/s/s/\a\a\a"; 
// undefined 
some_var 
// "/s/s/s/aaa" 

所以,我可以通過rel選擇項目(項目)\在裏面嗎?

這是不是所有想要工作

$("#file[rel='\\dir\\file.sql']") 
$("#file[rel='/\dir/\file.sql']") // ^^ 

http://jsfiddle.net/fUNLV/1/不工作:(

+0

http://api.jquery.com/category/selectors/ – Blazemonger

回答

3

反斜槓是一個轉義字符逃避轉義字符,你可以雙擊它。

編輯 - 在這種情況下,排出的需要是雙重逸出:

http://jsfiddle.net/FSqZe/

var $el = $('#file[rel="\\\\dir\\\\file.sql"]'); 
+0

http://jsfiddle.net/fUNLV/1/不工作:( –

+0

OMG,但爲什麼4個斜線??? –

+0

因爲它得到兩次未轉義 –

1

您需要使用雙反斜槓的這個:

$("#file[rel='\\dir\\file.sql']") 

這是因爲只有一個\斜線將試圖逃跑下一個符號和雙斜線將逃脫第一個斜槓。

UPDATE

看來你需要使用\\\\

$("#file[rel='\\\\dir\\\\file.sql']") 

jsFiddle demo

+0

http://jsfiddle.net/fUNLV/1不能正常工作:( –

+0

@AlexKiselev查看我的更新回答 – antyrat

1

您需要的逃生斜線,不只是1

$("#file[rel='\\\\dir\\\\file.sql']") // that's 4 slashes in each case, 8 total 

http://jsfiddle.net/Tentonaxe/fUNLV/2/

這是因爲,首先,這個字符串被傳遞給jQuery的,在這一點,當它被再次通過內部送到document.querySelectorAll()它會成爲

"#file[rel='\\dir\\file.sql']" 

然後,斜線是正確轉義的CSS選擇器引擎。

http://jsfiddle.net/Tentonaxe/fUNLV/4/

+0

+1 ...我以前從未遇到過這種情況。 –

+0

我從來沒有來過自己穿過它,但是我在SO之前曾經遇到過一次。 –