En la nota de 1,6 que he dividido el manejo de los atributos DOM y las propiedades DOM en métodos separados. El nuevo método .prop() establece u obtiene propiedades en elementos DOM, y .removeProp() elimina propiedades.En el pasado, jQuery no ha dibujado una línea clara entre las propiedades y los atributos . Generalmente, los atributos DOM representan el estado de la información de DOM tal como se obtuvo del documento, como como el atributo de valor en el marcado . Las propiedades DOM representan el estado dinámico del documento; por ejemplo, si el usuario hace clic en el elemento de entrada encima de y escribe def .prop("value")
es abcdef pero el .attr("value")
sigue siendo abc.
En la mayoría de los casos, el navegador trata el valor atributo como el valor de partida de la propiedad, pero Boole atributos tales como equipaje facturado o discapacitados tienen semántica inusuales.
Por ejemplo, considere el marcado <input type="checkbox" checked>
. La presencia del atributo comprobado significa que la propiedad DOM .checked
es verdadera, aunque el atributo no tenga un valor. En el código anterior, el valor del atributo comprobado es una cadena vacía (o undefined
si no se especificó el atributo ) pero el valor de propiedad verificado es true
.
Antes de jQuery 1.6, .attr("checked")
devolvió el valor de propiedad Boolean (true
) pero a partir de jQuery 1.6 que devuelve el valor real del atributo (una cadena vacía ), que no cambia cuando el usuario hace clic la casilla de verificación cambia su estado.
Hay varias alternativas para que comprueban el estado actualmente-comprobado de una casilla de verificación. Lo mejor y más es utilizar la propiedad DOM directamente, como en this.checked
dentro de un controlador de eventos cuando este hace referencia al elemento que se hizo clic. En el código que utiliza jQuery 1.6 o posterior, el nuevo método $(this).prop("checked")
recupera el mismo valor que this.checked
y es relativamente rápido. Finalmente, la expresión $(this).is(":checked")
funciona para todas las versiones de jQuery.
¿No son el tipo de preguntas que se pueden responder a sí mismo escribiendo 5-10 líneas de jQuery y observando los resultados? –