如何使用哈希值作为select器?

假设下面的html:

<div id='test#1'>test1</div> <div id='test#2'>test2</div> 

现在,下面是不行的,为什么?

CSS ….

 #test#1{color: red;} 

jQuery的….

 $('#test#2').css('color','blue'); 

要使用任何元字符,如!“#$%&'()* +,。/ :; <=>?@ [] ^`{|}〜作为名称的文字部分,它必须是逃避与反斜杠:

css的方式:

 #test\#1{ color: red; } 

jQuery的方式:

 $('#test\\#2').css('color','blue'); 

演示


build议:

你不应该使用#在你的ID 查看更多的细节

ID和NAME标记必须以字母([A-Za-z])开始,后面跟随任意数量的字母,数字([0-9]),连字符(“ – ”),下划线(“_”) ,冒号(“:”)和句点(“。”)。


所以,你可能也想知道id =“test.1”可以使用,因此你也应该如上所述逃避angular色。

您可以使用反斜杠\转义#

 #test\#1{ color: red; } 

与jQuery,你可以做同样的方式,但你需要逃避\另一个反斜杠:

要使用任何元字符(如!“#$%&'()* +,。/ :; <=>?@ [] ^`{|}〜)作为名称的文字部分,必须用两个反斜杠逃脱:\\

 $('#test\\#2').css('color','blue'); 

小提琴演示

但是,根据HTML 4规范 , #不是有效的唯一标识符:

ID和NAME标记必须以字母([A-Za-z])开始,后面跟随任意数量的字母,数字([0-9]),连字符(“ – ”),下划线(“_”) ,冒号(“:”)和句点(“。”)。

和HTML 5规范 :

该值必须在元素的主子树中的所有ID中唯一,并且必须至less包含一个字符。 该值不能包含任何空格字符。

所以你应该删除你的ID中的第二个#

当使用特殊字符时必须使用\

 var test1 = $('#test\\#1'); 

http://bugs.jquery.com/ticket/4944