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

From the documentation:

To use any of the meta-characters ( such as !"#$%&'()*+,./:;<=>?@[\]^{|}~` ) as a literal part of a name, it must be escaped with with two backslashes: \\.

So $('#\\#id') should work, though I really recommend to not use # as part of the ID, to avoid any possible problems. For example, I don't think there is away to escape the character in CSS rules (I could be wrong though) or using the ID as target (like <a href="##id"></a>) will probably not work either.

于 2013-04-26T19:42:55.560 に答える
1

It's generally a bad idea with special characters in selectors, but you can always just escape them :

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

FIDDLE

于 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

#s用に予約された特別な記号idです。ID の名前には使用しないでください。これをやりたいと思う具体的な理由はありますか?

于 2013-04-26T19:41:17.747 に答える