jQuery 1.5 : AJAX réécrit, objets différés & clone de jQuery

jQuery 1.5 sous les projecteurs. C’est près d’un mois et demi après la sortie de jQuery 1.4.4 qu’est dévoilé la nouvelle version du célèbre framework JavaScript. Beaucoup de changements sont ainsi à souligner à travers les 83 bugs corrigés et pas moins de 460 tickets traités.

L’un des points important de jQuery 1.5 est la réécriture totale du module AJAX qui renvoit désormais des objets jXHR pour une meilleure consistance avec les objets XMLHttpRequest cross plateformes.

JQuery 1.5 annonce qui plus est l’arrivée d’une nouvelle fonctionnalité : les objets différés. Ces derniers offre la possibilité d’interagir avec des données retournées encore pourtant inaccessibles ; comme lors de requêtes asynchrones par exemple.

// Assign handlers immediately after making the request,
// and remember the jxhr object for this request
var jxhr = $.ajax({ url: "example.php" })
.success(function() { alert("success"); })
.error(function() { alert("error"); })
.complete(function() { alert("complete"); });

// perform other work here ...

// Set another completion function for the request above
jxhr.complete(function(){ alert("second complete"); });

Cette nouvelle release apporte en outre le clone de la librairie jQuery via jQuery.sub(). Les surcharges de méthodes natives sont ainsi envisageables sans risque d’affecter des parties de code utilisant lesdites méthodes jQuery modifiées. Un autre intérêt de cette copie est la suppression des éventuelles collisions au niveau des namespaces, pour un plugin par exemple.

(function() {
var myjQuery = jQuery.sub();

myjQuery.fn.remove = function() {
// New functionality: Trigger a remove event
this.trigger("remove");

// Be sure to call the original jQuery remove method
return jQuery.fn.remove.apply( this, arguments );
};

myjQuery(function($) {
$(".menu").click(function() {
$(this).find(".submenu").remove();
});

// A new remove event is now triggered from this copy of jQuery
$(document).bind("remove", function(e) {
$(e.target).parent().hide();
});
});
})();

// Regular jQuery doesn't trigger a remove event when removing an element
// This functionality is only contained within the modified 'myjQuery'.

Est finalement à noter une amélioration des performances concernant les méthodes .children(), .prev() et .next().

Source : Blog jQuery

Baptiste Simon aka TiChou

Ingénieur développeur web dans le secteur du e-commerce et du tourisme mais avant toute chose passionné par internet et ses intarissables ressources.

2 commentaires, pings et rétroliens

Partenaires et blog à la une