Was wurde in jQuery 1.9.1 geändert, um zu bewirken, dass die .data-Erweiterungsmethode null statt undefiniert zurückgibt, wenn ein Selektor keine Ergebnisse zurückgibt?

9

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.

Ссылка

    
Sam R 24.01.2014, 21:13
quelle

1 Antwort

3

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.

    
Djizeus 27.01.2014, 11:44
quelle

Tags und Links