我有一个dom元素,它包含一个完全限定的名称作为id属性的一部分;
<div id="domain\element\div">My Div</div>
似乎不可能让jQuery按ID选择元素。这是我的实验;
var $e1 = $('#domain\\\element\\\div');
var $e2 = $('#domain\\element\\div');
var $e3 = $(document.getElementById('domain\\\element\\\div'));
console.log($e1);
console.log($e2);
console.log($e3);
控制台的输出显示前两个为空,而第三个有效;
[]
[]
<div id="domain\element\div">TODO write content</div>
我正在使用jQuery 1.5.2。这是jQuery本身的错误还是我的选择器字符串错误?
答案 0 :(得分:17)
如果您可以更改HTML代码中的ID,请为您的ID找到除反斜杠\
之外的其他分隔符,以便为选择器创建有效ID(请参阅here)。下划线_
会很好。
如果你不能改变HTML,jQuery仍然可以使用ID和ID选择器中的反斜杠。除此之外,您需要使用四个反斜杠来匹配ID选择器中的每个文字反斜杠:
$('#domain\\\\element\\\\div')
您可以通过
实现这一目标获取ID:
domain\element\div
添加#
符号并转义选择器的反斜杠:
#domain\\element\\div
通过加倍使用JavaScript字符串来转义每对反斜杠(也请注意引号):
'#domain\\\\element\\\\div'
然后将字符串传递给$()
,如上所述。