jQuery不会将带有ID的元素作为有效的电子邮件地址

时间:2012-09-30 10:03:59

标签: jquery

  

可能重复:
  special characters in id of html tags

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

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

现在使用jQuery,我想选择DIV并隐藏它:

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

这不起作用!

由于我正在动态生成这些DIV,并且我不想再次查询数据库中的实际行ID,我将使用电子邮件地址作为ID,我不能这样做...... < / p>

对此有任何解决方案吗?

提前致谢

3 个答案:

答案 0 :(得分:2)

请注意,此类ID仅在HTML5中合法。

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

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

答案 1 :(得分:0)

  

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

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

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

    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!
    

    要使用此功能,您需要\\之类的$('#example\\@example.com')

    来逃避这些事情

答案 2 :(得分:0)

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

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

然后使用jQuery来选择它

$('div[data-id="example@example.com"]').hide();