为HTML元素创建id属性时,该值有哪些规则?


当前回答

连字符、下划线、句点、冒号、数字和字母都适用于CSS和jQuery。以下内容应该有效,但在整个页面中必须是唯一的,并且必须以字母[a-Za-z]开头。

使用冒号和句点需要做更多的工作,但可以按照下面的示例进行操作。

<html>
<head>
<title>Cake</title>
<style type="text/css">
    #i\.Really\.Like\.Cake {
        color: green;
    }
    #i\:Really\:Like\:Cake {
        color: blue;
    }
</style>
</head>
<body>
    <div id="i.Really.Like.Cake">Cake</div>
    <div id="testResultPeriod"></div>

    <div id="i:Really:Like:Cake">Cake</div>
    <div id="testResultColon"></div>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
    <script type="text/javascript">
        $(function() {
            var testPeriod = $("#i\\.Really\\.Like\\.Cake");
            $("#testResultPeriod").html("found " + testPeriod.length + " result.");

            var testColon = $("#i\\:Really\\:Like\\:Cake");
            $("#testResultColon").html("found " + testColon.length + " result.");
        });
    </script>
</body>
</html>

其他回答

严格来说,它应该匹配

[A-Za-z][-A-Za-z0-9_:.]*

但是jQuery似乎有冒号的问题,所以最好避免使用冒号。

jQuery不处理任何有效的ID名称。你只需要转义元字符(例如,点、分号、方括号…)

var name = 'O'Hara';

jQuery API中的选择器(请参见底部注释)

HTML格式

ID应以{A-Z}或{A-Z}开头。您可以添加数字、句点、连字符、下划线和冒号。

例如:

<span id="testID2"></span>
<span id="test-ID2"></span>
<span id="test_ID2"></span>
<span id="test:ID2"></span>
<span id="test.ID2"></span>

但是,即使您可以使用冒号(:)或句点(.)创建ID。CSS很难将这些ID用作选择器。主要是当您想要使用伪元素(:before和:after)时。

在JavaScript中,也很难选择这些ID。因此,您应该使用前四个ID作为许多开发人员的首选方式,如果有必要,您也可以使用后两个ID。

元素的唯一标识符。

文档中不能有多个元素具有相同的id值。

任何字符串,具有以下限制:

必须至少有一个字符长不得包含任何空格字符:U+0020空格U+0009字符表(选项卡)U+000A管线进料(LF)U+000C模板进料(FF)U+000D回车(CR)

使用ASCII字母和数字以外的字符,“_”、“-”和“.”可能会导致兼容性问题,因为HTML 4中不允许这些问题。虽然HTML5中取消了这一限制,但为了兼容性,ID应该以字母开头。

救命,我的Javascript坏了!

每个人都说ID不能重复。

在除FireFox之外的所有浏览器中都试用过

<div id=“ONE”></div><div id=“ONE”></div><div id=“ONE”></div><脚本>document.body.append(document.querySelectorAll(“#ONE”).length,'DIV!')document.body.append('in',typeofONE)console.log(一);//全局变量!!</script>

解释

在世纪之交,微软拥有90%的浏览器市场份额,

并实施从未标准化的浏览器行为:

1.为每个ID创建全局变量

2.为重复ID创建数组

所有后来的浏览器供应商都复制了这种行为,否则他们的浏览器将不支持旧网站。

2015年左右,Mozilla删除了2。来自FireFox和1。仍然有效。

所有其他浏览器仍然支持1。和2。

我每天都使用它,因为键入ONE而不是document.querySelector(“#ONE”)帮助我更快地创建原型;我不在生产中使用它。