jQuery选择额外的哈希

时间:2013-04-26 19:39:36

标签: jquery

我正在尝试在其前面添加一个额外的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');
});

任何帮助都将不胜感激。

5 个答案:

答案 0 :(得分:5)

来自documentation

  

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

So $('#\\#id') should work,虽然我真的建议不要将#用作ID的一部分,以避免任何可能的问题。例如,我不认为有可能逃避CSS规则中的角色(虽然我可能错了)或使用ID作为目标(如<a href="##id"></a>)也可能无法正常工作。

答案 1 :(得分:1)

选择器中的特殊字符通常是一个坏主意,但你总是可以逃避它们:

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

FIDDLE

答案 2 :(得分:1)

http://jsfiddle.net/mohammadAdil/exngF/

你需要逃避额外的#

$('#\\#id')

此处有更多信息

http://learn.jquery.com/using-jquery-core/faq/how-do-i-select-an-element-by-an-id-that-has-characters-used-in-css-notation/

  

为了告诉jQuery从字面上理解这些字符   而不是CSS符号,它们必须通过放置两个来“逃脱”   在他们面前的反斜杠

答案 3 :(得分:0)

根据W3C

  

ID和NAME令牌必须以字母([A-Za-z])开头,可能是   后跟任意数量的字母,数字([0-9]),连字符(“ - ”),   下划线(“_”),冒号(“:”)和句点(“。”)。

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

答案 4 :(得分:-1)

#是为id保留的特殊符号。您不应该在ID的名称中使用它。你有什么理由想要这样做吗?