HTML中id属性的有效值是什么?
为HTML元素创建id属性时,该值有哪些规则?
解决方案
回答
根据HTML 4规范:
ID and NAME tokens must begin with a letter ([A-Za-z]) and may be followed by any number of letters, digits ([0-9]), hyphens ("-"), underscores ("_"), colons (":"), and periods (".").
一个常见的错误是使用以数字开头的ID。
回答
严格应该匹配
[A-Za-z][-A-Za-z0-9_:.]*
但是jquery似乎在冒号方面存在问题,因此最好避免使用冒号。
回答
从HTML 4规范...
ID和NAME令牌必须以字母([A-Za-z])开头,后跟任意数量的字母,数字([0-9]),连字符("-"),下划线(" _") ,冒号(":")和句点("。")。
编辑:天哪!再次被殴打!
回答
实际上,尽管从技术上讲这不是有效的HTML,但是许多站点都使用以数字开头的id属性。
HTML 5规范草案放宽了id和name属性的规则:它们现在只是不透明的字符串,不能包含空格。
回答
另外,请不要忘记ID是唯一的。一旦使用,ID值可能不会再出现在文档中的任何位置。
我们可能有许多ID,但是所有ID都必须具有唯一值。
另一方面,有类元素。就像ID一样,它可以出现很多次,但是该值可以反复使用。
回答
从技术上讲,我们可以在id / name属性中使用冒号和句点,但是我强烈建议我们避免同时使用这两者。
在CSS(和jQuery等多个JavaScript库)中,句点和冒号都有特殊含义,如果不小心,就会遇到问题。句点是类选择器,而冒号是伪选择器(例如,当鼠标悬停在元素上时,元素的":hover")。
如果为元素提供id为" my.cool:thing",则CSS选择器将如下所示:
#my.cool:thing { ... /* some rules */ ... }
这实际上是在讲CSS的" id为'my',一类'cool'和'thing'伪选择器的元素"。
在任何情况下,数字,下划线和连字符都应按字母A-Z排列。如上所述,请确保ID是唯一的。
那应该是第一个问题。
回答
对于HTML 4,技术上的答案是:
ID and NAME tokens must begin with a letter ([A-Za-z]) and may be followed by any number of letters, digits ([0-9]), hyphens ("-"), underscores ("_"), colons (":"), and periods (".").
HTML 5甚至更宽容,只说一个id必须至少包含一个字符,并且不得包含任何空格字符。
id属性在XHTML中区分大小写。
从纯粹的实践出发,我们可能要避免使用某些字符。句点,冒号和'#'在CSS选择器中具有特殊含义,因此我们必须在CSS中使用反斜杠或者在传递给jQuery的选择器字符串中使用双反斜杠来转义那些字符。想一想,在迷上句号和ID中的冒号之前,必须多久在样式表或者代码中转义一个字符。
例如,HTML声明" <div id =" first.name"> </ div>"有效。我们可以在CSS中将该元素选择为#first \ .name
,而在jQuery中选择该元素,如下所示:$('#first \\。name')。 ')
,我们将拥有一个完全有效的选择器,以查找ID为" first"且元素名称为" class"的元素。这是一个容易忽略的错误。从长远来看,我们可能会更快乐,而是选择id为" first-name"(连字符而不是句点)。
我们可以严格遵循命名约定来简化开发任务。例如,如果我们将自己完全限制为小写字母,并且始终使用连字符或者下划线来分隔单词(但不能同时使用连字符或者下划线来分隔单词),那么我们将拥有一种易于记忆的模式。我们将永远不会怀疑"是FirstName还是FirstName?"因为我们将永远知道我们应该输入" first_name"。喜欢骆驼案吗?然后限制自己,不要使用连字符或者下划线,并且始终对第一个字符使用大写或者小写,请勿混用。
现在一个非常模糊的问题是,至少一个浏览器Netscape 6错误地将id属性值视为区分大小写。这意味着,如果我们在HTML(小写字母" f")中键入了" id =" firstName"`,而在CSS(大写字母" F")中键入了" #FirstName {color:red}",那么该浏览器就会可能无法将元素的颜色设置为红色。在进行此编辑(2015年4月)时,希望我们不会被要求支持Netscape6. 请考虑一下这是一个历史脚注。
回答
jQuery会处理任何有效的ID名称。我们只需要转义元字符(即点,分号,方括号...)。这就像说JavaScript的引号有问题只是因为我们无法编写
var name = 'O'Hara';
jQuery API中的选择器(请参阅底部注释)
回答
看起来,尽管冒号(:)和句点(。)在HTML规范中有效,但它们在CSS中作为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>