Unterschied zwischen jQuery attr() und getAttribute()

Der jQuery-Dokumentation für die attr Methode besagt, dass:

Attributwerte sind strings mit Ausnahme von ein paar Parametern
wie Wert-und tabindex.

... Und das scheint der Fall zu sein. Betrachten Sie das folgende element:

<input type="text" id="example" tabindex="3">

Die folgende Zeile funktioniert in der Tat zeigen, "Zahl", nicht "string":

alert(typeof $("#example").attr("tabindex")); //Number

Nun, die Sache, die mich verwirrend ist, dass bei der Verwendung der DOM-Methode getAttribute, erhalten Sie ein anderes Ergebnis:

alert(typeof $("#example")[0].getAttribute("tabindex")); //String

Blick auf das jQuery-Quelle für die attr Methode, scheint es, dass jQuery einfach zurückgegeben, was getAttribute gibt, also warum gibt es einen Unterschied? Hier ist die relevanten Zeilen der jQuery-source:

ret = elem.getAttribute( name );
//Non-existent attributes return null, we normalize to undefined
return ret === null ?
         undefined :
         ret;

Und hier ist ein fiddle das Problem veranschaulichen. Nur um die Dinge zu verwirren weiter, ich habe es ausprobiert in Chrome 15, Firefox 8, IE8 und IE7, und alle Verhalten sich wie oben beschrieben, außer für den IE7, die Warnungen "Anzahl" für beide (was ich erwarten würde, zu passieren).

Schreibe einen Kommentar