Kürzlich wurde die Anwendung, an der ich arbeite, von jQuery 1.7.1 auf 1.10.2 aktualisiert, einschließlich Migrate 1.2.1.
Nach dem Upgrade haben wir festgestellt, dass jQuery unterschiedliche Ergebnisse für die Erweiterungsmethode data
zurückgegeben hat, abhängig davon, ob der Selektor Ergebnisse erzielt hat. Die attr
-Erweiterungsmethode gibt unabhängig von den Selektor-Ergebnissen immer undefined
zurück.
Mit dem folgenden HTML-Dokument habe ich Tests mit den Versionen 1.7.1, 1.8.3, 1.9.1 und 1.10.2 durchgeführt.
%Vor%
In 1.7.1 und 1.8.3 sind alle Ergebnisse undefined
.
In 1.9.1 und 1.10.2 Ergebnisse für einen leeren Selektor mit .data("blah")
von undefined
auf null
geschaltet.
Ich habe die 1.9.0-Upgrade-Dokumente sowie die Versionshinweise zu 1.10.0 überprüft und keine Hinweise auf diese Änderungen gefunden. Weiß jemand, warum das so ist? War es absichtlich?
Ich habe eine Geige eingefügt, um zu zeigen, wie die verschiedenen Versionen von jQuery damit umgegangen sind.
Diese Änderung des Verhaltens war nicht gewollt, es ist (oder vielmehr: es war) ein Fehler. Der Unterschied kommt von diesen Zeilen:
In jquery-1.8.3.js: 1772
%Vor% Wenn der Selektor leer ist, wird data
zurückgegeben und zu diesem Zeitpunkt ist data
undefined
.
Aber in jquery-1.9.1.js: 1824
%Vor% Wenn der Selektor leer ist, wird elem
als falsch ausgewertet und null
wird zurückgegeben.
Dies war nicht beabsichtigt und wurde tatsächlich durch dieses Commit im November behoben. Das Ausführen des Codes mit jquery-1.11.0 hat das ursprüngliche Verhalten: undefined
wird zurückgegeben.
Tags und Links javascript jquery