我有html
<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 :(得分:3)
反斜杠是一个转义字符。要转义转义字符,可以将其加倍:
编辑 - 在这种情况下,转义需要双重转义:
var $el = $('#file[rel="\\\\dir\\\\file.sql"]');
答案 1 :(得分:1)
你需要使用双重反斜杠:
$("#file[rel='\\dir\\file.sql']")
发生这种情况是因为只有一个\
斜杠会尝试转义下一个符号,并且双斜线将首先转义为斜杠。
<强>更新强>
似乎您需要使用\\\\
:
$("#file[rel='\\\\dir\\\\file.sql']")
答案 2 :(得分:1)
你需要逃避两个斜杠,而不只是1。
$("#file[rel='\\\\dir\\\\file.sql']") // that's 4 slashes in each case, 8 total
http://jsfiddle.net/Tentonaxe/fUNLV/2/
这是因为首先,这个字符串被传递给jQuery,此时它将成为
"#file[rel='\\dir\\file.sql']"
然后当它再次在内部传递给document.querySelectorAll()
时,斜杠会正确转义为css选择器引擎。