Kürzlich die Anwendung, die ich arbeite, aktualisiert von jQuery 1.7.1 zu 1.10.2 mit Migrate 1.2.1 enthalten.Was wurde in jQuery 1.9.1 geändert, damit die .data-Erweiterungsmethode null statt undefiniert zurückgibt, wenn ein Selektor keine Ergebnisse zurückgibt?
Nach der Aktualisierung 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 Erweiterungsmethode attr
gibt unabhängig von den Selektorergebnissen 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.
<html>
<head></head>
<body>
<div id="results">trying to access .data member off a selector that returns no results</div>
<script type="text/javascript" src="jQuery.js"></script>
<script type="text/javascript">
$(function(){
var target = $("#results");
target.append("<div>jQuery " + $.fn.jquery + " => " + $("p").data("blah") + "</div>");
target.append("<div>jQuery " + $.fn.jquery + " => " + $("p").attr("data-blah") + "</div>");
target.append("<div>jQuery " + $.fn.jquery + " => " + $("body").data("blah") + "</div>");
target.append("<div>jQuery " + $.fn.jquery + " => " + $("body").attr("data-blah") + "</div>");
});
</script>
</body>
In 1.7.1 und 1.8.3 alle Ergebnisse sind undefined
. In 1.9.1 und 1.10.2 Ergebnisse für einen leeren Selektor mit .data("blah")
von undefined
zu null
geschaltet.
Ich habe die 1.9.0 Upgrade-Dokumente sowie die Release Notes 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 das gehandhabt haben.
Es tut mir leid, dass Sie Recht haben. Ich habe die falsche Version der Geige aufgenommen. Aktualisiere es jetzt. –
Beim Versuch, diese Commit zu verfolgen, kann es hilfreich sein, [this file] (https://github.com/jquery/jquery/blob/1.x-master/src/data.js) auf github nach Änderungen zwischen zu sehen 13. November 2012 und 15. Januar 2013 ([Quelle] (https://jquery.org/history/)) –