2012-05-25 12 views

Respuesta

12

El documentation dice:

Cuando el parámetro tiene una sola etiqueta, tales como $ (' < img/> ') $ o (' <a> </a > '), jQuery crea el elemento utilizando la función nativa JavaScript createElement().

También dice:

Etiquetas que no pueden contener elementos pueden ser cerrado rápido o no

Por lo tanto, la forma $('<div>') parecer también funciona, pero está indocumentado. De la documentación se desprende claramente que la intención es que una etiqueta que necesita una etiqueta de cierre debe tener esa etiqueta de cierre o ser cerrada por sí misma.

Me apegaré a la versión documentada, ya que es menos probable que sea víctima de un cambio de rotura en una versión futura.

<diatriba>
La biblioteca jQuery tiene un hábito de poner lo más posible en una llamada de función única (véase la reciente on además de un ejemplo), así que no es tan descabellada que iban a inventar algo nueva suceda cuando se utiliza una etiqueta no autocierre ...
</diatriba >

4

Esa sintaxis no causará problemas mientras nada venga después.

$("<div>") // Ok! 
$("<div>foobar") // Not Ok! 
$("<div><p>") // Not Ok! 

Para referencia, ver http://api.jquery.com/jQuery/#jQuery2

+1

Buena respuesta, pero después de revisar la documentación, decidí que, aunque funciona, probablemente no sea la mejor práctica. –

6

No. ni este ni $("<div>") este $("<div />") causará problemas.

La prueba de ello es por lo que si vamos a jQuery sources podemos ver que en el caso de selector con la sintaxis de etiqueta única <...> se realiza un análisis sintáctico de selección con esta expresión regular:

rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>)?$/ 

donde sólo la parte simbólica se utiliza para createElement y barra oblicua pueden ser opcionales.

Cuestiones relacionadas