2012-09-08 79 views
41

目前在我们的插件设置在html5中设置复选框为选中状态,我应该简单地使用checked(作为属性)还是checked =“checked”(作为属性)?

<input type="checkbox" checked="checked" /> 

这是为了保持兼容性XHTML作为托运我们设定的复选框。我更习惯设置检查作为属性

<input type="checkbox" checked /> 

什么是HTML5进行正确的方法是什么?我们应该还在乎XHTML兼容性?

+3

请注意,您在HTML5中也不需要'/>'。 –

+1

这不是一个属性,这仍然是一个属性。如果您在脚本中或其他任何将其称为属性的位置执行此操作,则只会设置该属性。但在HTML和XML标记中,它被称为属性。 – BoltClock

回答

35

正是在这两种情况下的属性。在任何一种情况下,它都会在元素节点的DOM属性上设置一个值(相同的值,true)。

对于大多数用途,使用哪种语法并不重要。然而,也有一些需要注意的事项:

  • 如果您在XML序列化(“XHTML5”)使用HTML5,你必须使用checked="checked"
  • 在样式中,使用属性选择器时语法不完全相同(较短的格式不匹配[checked=checked]),但在实践中这并不重要:在任何情况下,[checked]都匹配复选框。
  • 笨拙的语法checked="checked"是一个来自SGML的保留,并且仅用于兼容性,因此它可能会使您的代码看起来过时(这很少有关系)。
+0

这个语法是否从SGML延伸到XHTML(而不是XML)? – BoltClock

+1

'checked =“checked”'语法也被带入了XML。 HTML5不是基于SGML或XML,因此它可以更自然地定义自己的语法:“布尔”属性只是一个名称(不需要将其解释为名称=值语法的简化形式)。 –

+0

@DanDascalescu当使用jQuery来设置属性时,你必须调用.prop('checked','checked'),因为prop('checked')显然只会检索复选框的状态,attr将不起作用。 [属性与属性:http://api.jquery.com/prop/] –

22
<!-- Default to unchecked --> 
<input type="checkbox"> 

<!-- Default to checked, XHTML --> 
<input type="checkbox" checked="checked" /> 

<!-- Default to checked, HTML5 --> 
<input type="checkbox" checked> 

来源:http://css-tricks.com/indeterminate-checkboxes/

7

Checked在HTML 5.一个布尔属性的真值由属性所指示存在,和伪值被指示由于缺席。如果它存在,它的值应该是空的或设置为属性名称checked="checked"。下面这些形式都是正确的:

<input type="checkbox" checked="checked" /> 
<input type="checkbox" checked> 

http://www.w3.org/TR/html5/infrastructure.html#boolean-attributes

+0

你的链接已被打破,请更新!这里是:http://www.w3.org/TR/html5/infrastructure.html#boolean-attributes – NessDan

+2

完成。将来,请随时自行编辑这样的内容。协作是使这个网站的答案很好的原因。 – jncraton

+1

我没注意到!感谢@jncraton的信息! – NessDan

5

您关心HTML5 XHTML兼容,如果要创建使用HTML5的XHTML序列化的文件,要么完全由与application/xhtml+xml MIME类型服务的文档,或创建一个既可以提供一个多语种的文件如application/xhtml+xmltext/html('normal'html mime-type)。

如果您只使用text/html,那么您不需要关心XHTML语法。但是,在您的页面中嵌入SVG或MathML时,可能会使用XML样式的自闭合语法。 (SVG在最新的浏览器中得到了广泛的支持,MathML的支持更少)。您也可以使用/>来结束void HTML元素,如元,链接,输入,img等,但这与使用>来终止这些效果不同元素。

对术语的小评论。在标记中,通常的说法是checkedchecked="checked"是“属性”。 “财产”是别的。

相关问题