2012-09-08 46 views
41

Actualmente en nuestro plugin que estaban estableciendo las casillas de verificación según se comprobó mediante el establecimiento deEn html5 para establecer una casilla de verificación como marcada, ¿debería usar simplemente checked (como propiedad) o checked = "checked" (como atributo)?

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

Esto era para mantener la compatibilidad con XHTML. Estoy más acostumbrado a ajuste comprobado como una propiedad

<input type="checkbox" checked /> 

Cuál es la forma correcta de proceder en HTML5? ¿Hay que preocuparse por la compatibilidad XHTML?

+3

Tenga en cuenta que tampoco necesita el '/>' en HTML5. –

+1

Eso no es una propiedad, eso sigue siendo un atributo. Solo está configurando la propiedad si lo hace en un script o en cualquier otro lugar que lo llame propiedad. Pero en el marcado HTML y XML, se llama un atributo. – BoltClock

Respuesta

35

Es un atributo en ambos casos. Y establece un valor (el mismo valor, true) en una propiedad DOM del nodo del elemento en cualquier caso.

Para la mayoría de los propósitos, no importa qué sintaxis utilice. Sin embargo, hay algunos puntos a tener en cuenta:

  • Si utiliza HTML5 en la serialización XML (“XHTML5”), debe utilizar checked="checked".
  • En el estilo, las sintaxis no son equivalentes al usar selectores de atributos (la forma más corta no coincide con [checked=checked]), pero esto no importa en la práctica: [checked] coincide con las casillas marcadas en cualquier caso.
  • La sintaxis torpe checked="checked" es un holdover de SGML y se incluye solo por compatibilidad, por lo que puede hacer que su código parezca pasado de moda (lo que rara vez importa).
+0

¿Esa sintaxis era un remanente de SGML que se llevó a XHTML (en lugar de XML)? – BoltClock

+1

La sintaxis 'checked =" checked "' también se incluyó en XML. HTML5 no está basado en SGML o XML, por lo que puede definir su propia sintaxis de una manera más natural: un atributo "booleano" es solo un nombre (sin necesidad de explicarlo como una forma reducida de sintaxis de nombre = valor). –

+0

@DanDascalescu Al usar jQuery para establecer un atributo, tendrá que llamar a .prop ('checked', 'checked') porque prop ('checked') obviamente solo recuperará el estado de la casilla de verificación y attr no funcionará . [Atributos vs. Propiedades: 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> 

Fuente: http://css-tricks.com/indeterminate-checkboxes/

7

Checked es un atributo booleano en HTML 5. Un valor verdadero se indica por el atributo de estar presente, y se indica un valor falso por su ausencia. Si está presente, su valor debe estar vacío o configurado con el nombre de propiedad checked="checked". Cualquiera de estas formas son correctas:

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

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

+0

¡Su enlace está roto, por favor actualícelo! Aquí está: http://www.w3.org/TR/html5/infrastructure.html#boolean-attributes – NessDan

+2

Listo. En el futuro, siéntase libre de hacer ediciones como esta usted mismo. La colaboración es lo que hace que las respuestas en este sitio sean geniales. – jncraton

+1

¡No lo noté! Gracias por la información @jncraton! – NessDan

5

Usted se preocupa por XHTML-compatibilidad de HTML5, si va a crear documentos que utilizan la serialización XHTML de HTML5, ya sea exclusivamente al servir el documento con un tipo application/xhtml+xml mimo, o la creación de un documento políglota que se puede servir ya sea como application/xhtml+xml o como text/html (el tipo "normal" html mime).

Si solo está usando text/html, entonces no necesita preocuparse por la sintaxis XHTML. Sin embargo, usted puede utilizar sintaxis de autocierre de estilo XML al incrustar SVG o MathML en su página. (SVG es ampliamente compatible con los navegadores más recientes, MathML no tanto). También puede usar /> al final void elementos HTML como meta, link, input, img, etc., pero esto no tiene ningún efecto diferente de usar > para finalizar esos elementos.

Un comentario menor sobre la terminología. En el marcado, en el lenguaje común checked o checked="checked" es un "atributo". Una "propiedad" es otra cosa.

Cuestiones relacionadas