我正在尝试在其前面添加一个额外的ID的父级,但它无法正常工作。 = “#”会导致此故障吗?或者jQuery有什么问题吗?
HTML:
<li><a href="blah" id="#id"></a></li>
<button id="clickme">click it</button>
jQuery的:
$('#clickme').click(function() {
('##id').parent().addClass('active');
});
任何帮助都将不胜感激。
答案 0 :(得分:5)
要使用任何元字符(例如
!"#$%&'()*+,./:;<=>?@[\]^
{|}〜`)作为名称的文字部分,必须使用两个反斜杠进行转义:\\
。
So $('#\\#id')
should work,虽然我真的建议不要将#
用作ID的一部分,以避免任何可能的问题。例如,我不认为有可能逃避CSS规则中的角色(虽然我可能错了)或使用ID作为目标(如<a href="##id"></a>
)也可能无法正常工作。
答案 1 :(得分:1)
选择器中的特殊字符通常是一个坏主意,但你总是可以逃避它们:
$('#clickme').click(function() {
$('#\\#id').parent().addClass('active');
});
答案 2 :(得分:1)
http://jsfiddle.net/mohammadAdil/exngF/
你需要逃避额外的#
$('#\\#id')
此处有更多信息
为了告诉jQuery从字面上理解这些字符 而不是CSS符号,它们必须通过放置两个来“逃脱” 在他们面前的反斜杠
答案 3 :(得分:0)
根据W3C:
ID和NAME令牌必须以字母([A-Za-z])开头,可能是 后跟任意数量的字母,数字([0-9]),连字符(“ - ”), 下划线(“_”),冒号(“:”)和句点(“。”)。
你真的不应该有一个ID为#id
的元素。是的,您可以像其他人建议的那样通过转义额外的哈希来解决解析问题,但更好的解决方案是为父div提供更好的ID,不需要特殊处理。
答案 4 :(得分:-1)
#
是为id
保留的特殊符号。您不应该在ID的名称中使用它。你有什么理由想要这样做吗?