2013-04-26 72 views
1

我试图让一个ID的父母在它前面有一个额外的#,但它不工作。 = '#'是否会导致此故障?或者jQuery有什么问题?jQuery选择一个额外的散列

HTML:

<li><a href="blah" id="#id"></a></li> 
<button id="clickme">click it</button> 

的jQuery:

$('#clickme').click(function() { 
    ('##id').parent().addClass('active'); 
}); 

任何帮助,将不胜感激。

回答

-1

#是为id s保留的特殊符号。你不应该在id的名字中使用它。为什么要这样做有特定的原因吗?

+2

不是一个真正的答案..你可以用逃避它''\\只是 – 2013-04-26 19:43:59

+1

因为你可以通过转义得到解决的问题'#'并不意味着你应该。更好的解决方案是将父div的ID更改为更可口的东西。 – FishBasketGordo 2013-04-26 19:56:05

1

它通常是一个坏主意,在选择特殊字符,但你永远可以逃脱他们:

$('#clickme').click(function() { 
    $('#\\#id').parent().addClass('active'); 
}); 

FIDDLE

5

documentation

要使用任何的元字符(如!"#$%&'()*+,./:;<=>[email protected][\]^ {|}〜`)作为名称的文字部分,必须用两个反斜杠进行转义:\\

So $('#\\#id') should work,但我真的建议不使用#作为ID的一部分,以避免任何可能出现的问题。例如,我不认为有逃避CSS规则中的字符(我可能是错误的)或使用ID作为目标(如<a href="##id"></a>)也可能不起作用。

+0

不知道这一点,但我有一个暗示,这是问题。谢谢您的帮助。 – alrightgame 2013-04-26 19:52:39

0

按照W3C

ID和名称标记必须以字母开头([A-ZA-Z])和之后可以是任何数量的字母,数字([0-9 ]),连字符(“ - ”), 下划线(“_”),冒号(“:”)和句点(“。”)。

你真的不应该有一个ID为#id的元素。是的,你可以像其他人所建议的那样通过转义额外散列来解决分析问题,但更好的解决方案是为父分区提供更好的ID,而不需要特殊处理。

+1

真正的HTML 4,但允许在HTML5 http://stackoverflow.com/questions/70579/what-are-valid-values-for-the-id-attribute-in-html – Turnip 2013-04-26 19:47:30

+1

我仍然说这不是一个非常好主意。 HTML的版本没有被指定,OP也没有提供一个为什么ID不能被改变的情况。 – FishBasketGordo 2013-04-26 19:51:26

+1

主观。对于一些人和编码习惯来说可能是有意义的。虽然我不会自己做 – Turnip 2013-04-26 19:53:18

相关问题