0

可能重复:
html标签的id中的特殊字符

我有一个 ID 为电子邮件的 DIV:

<div id="example@example.com">This is blah blah text</div>

现在使用 jQuery,我想选择该 DIV 并将其隐藏:

$('#example@example.com').hide();

那是行不通的!

由于我正在动态生成这些 DIV,并且我不想再次查询数据库以获取真实的行 ID,因此我将使用电子邮件地址作为 ID,但我做不到......

有什么解决办法吗?

提前致谢

4

3 回答 3

2

请注意,像这样的 ID 仅在 HTML5 中是合法的。

要在 jQuery 中使用这些 ID 作为选择器,您必须转义特殊字符:

$('#example\\@example.com').hide();
于 2012-09-30T10:09:06.473 回答
0

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

您的 id 在 html4.1 下无效,它必须遵循以下规则

  1. 必须包含至少一个字符
  2. 不得包含任何空格字符
  3. 在 HTML 中,所有值都不区分大小写

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

以上来自http://www.w3.org/TR/html4/types.html#type-id

但如果您使用的是 heml5,则以下内容有效

<div id="#">Foo.
<div id="##">Bar.
<div id="♥">Baz.
<div id="©">Inga.
<div id="{}">Lorem.
<div id="“‘’”">Ipsum.
<div id="⌘⌥">Dolor.
<div id="{}">Sit.
<div id="[attr=value]">Amet.
<div id="++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.">Hello world!

要使用它,您需要通过\\like来逃避这些东西$('#example\\@example.com')

于 2012-09-30T10:08:10.273 回答
0

您不能使用“example@example.com”作为 html 元素的 id,而是使用这样的 data 属性

<div data-id="example@example.com">
</div>

然后使用jQuery像这样选择它

$('div[data-id="example@example.com"]').hide();
于 2012-09-30T11:40:12.233 回答