44

目前在我们的插件中,我们将复选框设置为通过设置检查

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

这是为了保持 xhtml 兼容性。我更习惯将检查设置为属性

<input type="checkbox" checked />

在html5中进行的正确方法是什么?我们还应该关心xhtml兼容性吗?

4

5 回答 5

41

无论哪种情况,它都是一个属性。true无论哪种情况,它都会在元素节点的 DOM 属性上设置一个值(相同的值, )。

对于大多数目的,您使用哪种语法并不重要。但是,有几点需要注意:

  • 如果您在 XML 序列化(“XHTML5”)中使用 HTML5,则必须使用checked="checked".
  • 在样式中,使用属性选择器时的语法并不完全相同(较短的形式不匹配[checked=checked]),但这在实践中并不重要:[checked]在任何一种情况下都匹配选中的复选框。
  • 笨拙的语法checked="checked"是 SGML 的保留,只是为了兼容性而包含在内,因此它可能会使您的代码看起来过时(这很少重要)。
于 2012-09-08T14:19:02.433 回答
26
<!-- 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/

于 2012-09-08T13:54:07.717 回答
13

Checked是 HTML 5 中的布尔属性。属性存在表示真值,属性不存在表示假值。如果存在,则其值应为空或设置为属性名称checked="checked"。这些形式中的任何一种都是正确的:

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

https://html.spec.whatwg.org/multipage/common-microsyntaxes.html#boolean-attributes

于 2012-09-08T14:01:10.327 回答
5

您关心 HTML5 中的 XHTML 兼容性,如果您正在创建使用 HTML5 的 XHTML 序列化的文档,或者仅通过提供具有application/xhtml+xmlmime 类型的文档,或者创建可以作为application/xhtml+xml或作为text/html('普通' html mime 类型)。

如果您只使用text/html,那么您不需要关心 XHTML 语法。但是,在您的页面中嵌入 SVG 或 MathML 时,您可以使用 XML 样式的自关闭语法。(SVG 在最新的浏览器中得到广泛支持,MathML 则不那么支持。)您也可以使用/>来结束void HTML 元素,例如 meta、link、input、img 等,但这与使用>结束这些元素没有区别。

对术语的小评论。在标记中,通常的说法是checkedorchecked="checked"是一个“属性”。“财产”是另一回事。

于 2012-09-08T14:33:07.950 回答
0

根据http://www.w3.org/TR/html-markup/input.checkbox.html这是一个属性

于 2012-09-08T13:55:35.507 回答