
El método attr() sirve para acceder a atributos de la página y ya lo explicamos en un par de artículos del Manual de jQuery. En el texto Acceder y modificar atributos HTML desde jQuery repasamos los usos generales de este método y en el artículo Método attr() de jQuery, otros usos y removeAttr() vimos otros usos y el método "hermano" removeAttr().
Nota:
Ahora en el API de jQuery tenemos un nuevo integrante del ecosistéma de métodos para trabajo con los atributos de la página, llamado prop(), que sirve para acceder y modificar propiedades.
Pues bien, para clarificar esto, tengamos en cuenta a qué nos estamos refiriendo en este caso como atributo y a qué nos referimos con propiedad:
Atributo: cualquier cosa que tengamos en una etiqueta HTML para personalizarla.
<a style="color: red">...</a>
En ese caso "style" es un atributo de la etiqueta HTML.
Propiedad: cualquier cosa a la que podamos acceder desde una propiedad de un objeto nativo Javascript.
document.forms[0].elements[0].checked
En el ejemplo, tenemos varias propiedades en funcionamiento, pero veamos el "checked" final, que es una propiedad de un elemento de formulario. A esa propiedad accedemos desde el DOM de Javascript.
Por lo tanto, para concretar todavía más y ver lo confuso que puede llegar a ser, esa propiedad nativa Javascript "checked" sería diferente de este atributo "checked":
<input type="checkbox" checked="checked">
En ese caso "checked" es el atributo de HTML.
En principio, enviando un único parámetro nos sirve para acceder al valor de una propiedad, aquella que indiquemos en el parámetro. La otra opción nos sirve para modificar una propiedad y para ello debemos indicar dos parámetros, el primero sería la propiedad a modificar y el segundo el valor que queremos introducir.
$(elemento).prop("checked");
Esto nos devolvería el valor de la propiedad Javascript "checked", que seguramente sepamos, es un booleano que indica con true o false si un campo checkbox está o no marcado.
Si quisiéramos modificar el estado del checkbox, hacemos lo siguiente:
$(elemento).prop("checked", true);
Esto haría que el checkbox estuviera marcado como confirmado.
En la actualidad tenemos que usar los métodos con cuidado porque pueden producirse casos confusos. ¿Qué hacemos campoCheck.attr("checked") o mejor campoCheck.prop("checked")?
Para evitar esos casos, attr() solo te dará el valor de atributos HTML y prop() te dará el valor de las propiedades del DOM de Javascript para un elemento dado. En versiones más nuevas de jQuery todas las propiedades boleanas de los objetos del DOM se tienen que acceder por prop() y se han desactivado en attr(). Por ejemplo campoCheck.attr("checked") se ha desactivado para que no te devuelva ningún valor y siempre deberías acceder por campoCheck.prop("checked").
Para ver algunos ejemplos.
| Muy util este articulo Por: Javier | 29/8/2012
|
| prop() y attr() Por: Pablo Turchinsky | 03/9/2012
|