1

我正在尝试获取前面带有额外 # 的 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');
});

任何帮助,将不胜感激。

4

5 回答 5

5

文档中:

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

所以$('#\\#id')应该可以工作,尽管我真的建议不要将#其用作 ID 的一部分,以避免任何可能的问题。例如,我认为没有办法在 CSS 规则中转义字符(尽管我可能是错的)或者使用 ID 作为目标(如<a href="##id"></a>)可能也不起作用。

于 2013-04-26T19:42:55.560 回答
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 符号,必须通过在它们前面放置两个反斜杠来“转义”它们

于 2013-04-26T19:45:46.320 回答
1

在选择器中使用特殊字符通常是个坏主意,但您始终可以将它们转义:

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

小提琴

于 2013-04-26T19:42:32.403 回答
0

根据W3C

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

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

于 2013-04-26T19:42:55.530 回答
-1

#是为ids 保留的特殊符号。您不应该以 id 的名义使用它。您是否有特定的原因要这样做?

于 2013-04-26T19:41:17.747 回答