El documention jQuery para el método attr
establece que:Diferencia entre attr de jQuery() y getAttribute()
Los valores de atributo son las cadenas con la excepción de unos pocos atributos tales como el valor y el índice de tabulación.
Y ese parece ser el caso. Considere el siguiente elemento:
<input type="text" id="example" tabindex="3">
La siguiente línea en efecto espectáculo "número", no "cadena":
alert(typeof $("#example").attr("tabindex")); //Number
Ahora, lo que me está confundiendo es que cuando se utiliza el método de DOM getAttribute
, se obtiene un resultado diferente:
alert(typeof $("#example")[0].getAttribute("tabindex")); //String
en cuanto a la fuente de jQuery para el método attr
, parece que simplemente devuelve jQuery lo getAttribute
vuelve, entonces, ¿por qué hay una diferencia? Aquí está la relevant lines of the jQuery source:
ret = elem.getAttribute(name);
// Non-existent attributes return null, we normalize to undefined
return ret === null ?
undefined :
ret;
Y aquí hay un fiddle para demostrar el problema. Solo para confundir más las cosas, lo probé en Chrome 15, Firefox 8, IE8 e IE7, y todos se comportan como se describe arriba, excepto para IE7, que alerta "número" para ambos (que es lo que esperaría que sucediera) .
¡Ahh, eso me enseñará a no mirar un poco más y seguir correctamente la fuente jQuery! Gracias. –
Debe vincular a una determinada etiqueta, en lugar de a la rama principal. De lo contrario, los números de línea podrían cambiar en el futuro. –
@FelixKling: Hecho, gracias :) – Matt