jQuery选择器和反斜杠

时间:2011-04-28 22:53:58

标签: jquery jquery-selectors

我有一个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本身的错误还是我的选择器字符串错误?

1 个答案:

答案 0 :(得分:17)

如果您可以更改HTML代码中的ID,请为您的ID找到除反斜杠\之外的其他分隔符,以便为选择器创建有效ID(请参阅here)。下划线_会很好。

如果你不能改变HTML,jQuery仍然可以使用ID和ID选择器中的反斜杠。除此之外,您需要使用四个反斜杠来匹配ID选择器中的每个文字反斜杠:

$('#domain\\\\element\\\\div')

您可以通过

实现这一目标
  1. 获取ID:

    domain\element\div
    
  2. 添加#符号并转义选择器的反斜杠:

    #domain\\element\\div
    
  3. 通过加倍使用JavaScript字符串来转义每对反斜杠(也请注意引号):

    '#domain\\\\element\\\\div'
    
  4. 然后将字符串传递给$(),如上所述。

  5. jsFiddle