0

我有 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/不起作用:(

4

3 回答 3

3

反斜杠是转义字符。要转义转义字符,您可以将其加倍:

编辑 - 在这种情况下,转义需要双重转义:

http://jsfiddle.net/FSqZe/

var $el = $('#file[rel="\\\\dir\\\\file.sql"]');
于 2013-11-04T20:48:58.350 回答
1

为此,您需要使用双反斜杠:

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

发生这种情况是因为只有一个\斜杠会尝试转义下一个符号,而双斜杠会转义第一个斜杠。

更新

似乎你需要使用\\\\

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

jsFiddle 演示

于 2013-11-04T20:49:03.067 回答
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 选择器引擎。

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

于 2013-11-04T20:57:23.533 回答