Kev*_*vin 5 jquery jquery-selectors
我有一个dom元素,它包含一个完全限定的名称作为id属性的一部分;
<div id="domain\element\div">My Div</div>
Run Code Online (Sandbox Code Playgroud)
似乎不可能让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);
Run Code Online (Sandbox Code Playgroud)
控制台的输出显示前两个为空,而第三个工作;
[]
[]
<div id=?"domain\element\div">?TODO write content?</div>?
Run Code Online (Sandbox Code Playgroud)
我正在使用jQuery 1.5.2.这是jQuery本身的错误还是我的选择器字符串错了?
Bol*_*ock 17
如果您可以更改HTML代码中的ID,请找到除\ID 后面的反斜杠之外的其他分隔符,以便为选择器创建有效的ID(请参阅此处).下划线_会很好.
如果你不能改变HTML,jQuery仍然可以使用ID和ID选择器中的反斜杠.除此之外,您需要使用四个反斜杠来匹配ID选择器中的每个文字反斜杠:
$('#domain\\\\element\\\\div')
Run Code Online (Sandbox Code Playgroud)
你实现了这个目标
拿ID:
domain\element\div
Run Code Online (Sandbox Code Playgroud)添加#符号并转义选择器的反斜杠:
#domain\\element\\div
Run Code Online (Sandbox Code Playgroud)通过加倍来转义每对反斜杠以用于JavaScript字符串(也请注意引号):
'#domain\\\\element\\\\div'
Run Code Online (Sandbox Code Playgroud)然后将字符串传递给$()上面.