Wie bereits vor einigen Tagen berichtet, ist gestern die neue Version von Jquery erschienen. Die Version springt somit von Version 1.4.4 auf die aktuelle Version 1.5. Es wurden Module neu geschrieben, die Geschwindigkeit verbessert und ebenso wird ein neuer Packer zum Reduzieren der Dateigröße benutzt. Die Änderungen im Überlick.

Die größten Veränderungen sowohl im Quellcode, als auch für den späteren Anwender, gab es im AJAX-Modul, das größtenteils neu geschrieben wurde und um einige Funktionen erweitert. Ab Version 1.5 gibt es drei grundlegende Wege zum Senden, Empfangen und Verwalten AJAX-Requests. Zum Einen gibt es die Prefilters, die vor dem eigentlichen Request ausgeführt werden, die Converters, der behandelt unerwartete Datentypen, die vom erwarteten Datentypen abweichen und die Transports, ein in 1.5 neu eingeführtes Objekt, dass z.B. auf einen bestimmten Transport-Datentypen spezielle Funktionen ausführen kann. Bspw. kann beim Versenden von „script“ individueller Source nur für „script“ ausgeführt werden:

$.ajaxTransport( "script", function( options, originalOptions, jqXHR ) {
    /* Will only be called for script requests */
});

Eine weitere Neuheit in jQuery 1.5 ist das Deferred Objekt. War es bis Version 1.5 üblich, dass ein AJAX-Request abgeschickt wurde und irgendwann mit success oder error das Ergebnis des Requests verarbeitet wurde, so gibt es mit dem neu eingeführten Deferred Objekt neue Möglichkeiten Callbacks zu verarbeiten. Die AJAX-Requests, wie z.B $.get(), liefern als Ergebnis ein Deferred Objekt zurück und können dann mit den vom Deferred Objekt vorgesehen Methoden weiterverarbeitet werden.

$.get("test.php")
  .done(function(){ alert("$.get succeeded"); })
  .fail(function(){ alert("$.get failed!"); });

Wurde das Deferred Objekt korrekt abgearbeitet, wird in dem obigen Beispiel .done() ausgeführt oder im Fehlerfall .fail(). Interessant an dieser Stelle ist, dass in diesen Funktionen das Ergebnis des AJAX-Request zur Verfügung stehen. Es kann also in den Funktionen mit Werten gearbeitet werden, die erst in der Zukunft zur Verfügung stehen, wie es bei asynchronen AJAX-Requests der Fall ist. Die neuen Deferred Objekte bieten also einen flexiblen Ansatz zur Behandlung von Callbacks.

jQuery 1.5

jQuery 1.5

Neben diesen elementaren Erneuerungen wurde an der Geschwindigkeitsschraube von einigen Methoden gedreht. Dabei gab es Performance-Verbesserungen für .children(), .next() und prev(). Der Packer, der zum Minimieren der Source-Datei verwendet wird, wurde ebenfalls gewechselt und es wird jetzt UglifyJS zum Packen der Source Datei verwendet.