• Accueil
  • A Propos de
  • Léo par Norsola
  • Musique
  • Photos
  • warpdesign.fr
Bleu Orange Vert Rose Violet

jQuery 1.3.1: toujours mieux…

Posté dans Techno le Mercredi 28 janvier 2009 par leo Mots-Clés: css, dom, javascript, jquery, jquery1.3, js, mootools, nouveautes, plugin, prototype, selector, sizzle
28 jan

jqueryjQuery est passé en version 1.3 puis rapidement en version 1.3.1. Cette version apporte le lot habituel de changements (optimisations, nouvelles fonctionnalités, réécritures, etc…) mais aussi, et surtout, casse la compatibilité avec les versions précédentes. Comme je me suis cassé les dents dessus, sans le savoir, j’ai pensé qu’il serait bon de faire un petit tour de quelques unes des nouveautés et incompatibilités introduites dans cette version…

Nouveautés
Comme à chaque version majeure (et on peut se demander comment ils font), les développeurs de ce framework ont de nouveau augmenté les performances de jQuery:
performances de jquery

  • Réécriture de l’injection HTML: 6x plus rapide!
  • Utilisation d’un nouveau sélecteur, plus rapide: sizzle
  • Ajout des live events dans le core de jQuery
  • Nouvel objet Event
  • Réécriture de la méthode offset(), beaucoup plus rapide
  • Et bien plus…

Incompatibilités
Malheureusement, certaines fonctionnalités dépréciées depuis un moment ont été retirées de cette version. Les modifications à effectuer pour rendre son code compatible sont plutôt mineures, quand on sait où chercher :)

1. suppression de @ dans [@attr]
Le plus gros changement est la suppression de @. Une sélection comme:

$('input[@name=toto]')...

deviendra:

$('input[name=toto]')...

2. changements dans la méthode ready()
Auparavant la méthode attendait le chargement de toutes les feuilles de styles. Comme ce n’est plus le cas, tous les fichiers CSS doivent être inclus avant les scripts dans la page.

3. Ordre des sélecteurs « a, b, c »
L’ordre des sélecteurs peut varier. Les navigateurs supportant querySelectorAll (Safari, Firefox 3.1+, Opera 10+, IE8+) retourneront les éléments dans l’ordre du document alors que les autres navigateurs les retourneront (pour l’instant) dans l’ordre spécifié. Dans une prochaine version 1.3.x tous les sélecteurs séparés par des virgules seront retournés dans l’ordre du document.
Concrètement, cela signifie que dans l’exemple suivant:
DOM

<div id="c">
	Div c
  </div>
 
  <div id="b">
	Div b
  </div>
 
  <div id="a">
	Div a
  </div>

Code

$(document).ready(function()
{
    $('#a, #b, #c').each(
      function() {
         alert( $(this).attr('id') ); 
      }
   );
});

Les navigateurs supportant querySelectorAll (cf. au dessus), renverront les éléments dans l’ordre du DOM, à savoir:

c b a

Alors que les autres renverront les éléments dans l’ordre spécifié dans le sélecteur, c’est à dire:

a b c

Attention à ne pas se baser sur cet ordre donc !

Nouveautés
Cette nouvelle version de jQuery vient comme d’habitude avec son lot de nouveautés bien pratiques, parmi lesquelles:

1. nouvelle méthode closest( expr )
Cette méthode renvoie le plus proche parent correspondant à l’expression, l’élément de départ compris. Exemple:

DOM

<div class="superParent" id="main">
     <div>
        <ul id="maListe">
			<li id="15">
				<a>clique !</a>
			</li>
        </ul>
    </div>
  </div>

Code

$('a').click(function() {
  alert($(this).closest('li').attr('id'));
  alert($(this).closest('div.superParent').attr('id'));
});

L’exécution du code ci-dessus donnera le résultat suivant:

15
main

2. live events
Auparavant, les événements n’étaient pas mis à jour en temps réel sans passer par un plugin comme livequery et un appel comme celui là:

$('a') 
    .livequery('click', function(event) { 
        alert('clique !'); 
        return false; 
    });

sera tout simplement remplacé par:

$('a') 
    .live('click', function(event) { 
        alert('clique !'); 
        return false; 
    });

3. La méthode is() et selecteur not() supportent maintenant des expressions complexes, comme:

$('a:not(.selected, .highlighted)')...

Quelques liens
Pour finir, et pour en savoir plus, voici quelques liens sur jQuery:

  • changelog complet: changelog jQuery 1.3
  • Introduction à jQuery
  • Documentation officielle: docs.jquery.com

2 Commentaires

  1. marko le 29 janvier 2009

    Excellent résumé.

    Faute d’avoir trouver autres choses qu’un lot de parent(), closest() me semble une belle petite merveille !
    Il y a avais un autre moyen à l’époque JQuery < 1.3.1 ?

  2. leo le 29 janvier 2009

    Avant tu pouvais utiliser parent(), mais parent se limite aux parents directs et ne commence pas à l’élément lui-même. closest() est vraiment bien utile pour la gestion des évènements..



Laisser un message

Temps à Paris  Paris, 8°C

By Myself

  • Instant Photo
    A la moitié de la montée la vue commence vraiment à être chouette!
  • Articles Récents
    • CSS: vertical-align
    • Un peu de fraîcheur :)
    • Que du neuf en 2009 !
    • Ne le dites à personne!
    • Victoria… le retour ! :)
    • jQuery 1.3.1: toujours mieux…
  • Music on Air
     No music on air ! (something's wrong ;))
  • Derniers Commentaires
    • Un peu de fraîcheur :)  {1}
      Farko
    • Qui veut l'email de Victoria ? :D  {6}
      leo, Mat, Vigifraude [...]
    • Coût d'un SMS  {4}
      LIL JON, Da Sexy President, Nonounderground [...]
  • Catégories
    • Cinéma
    • Design
    • Divers
    • Inspiration
    • Musique
    • Réflexion
    • Techno
    • Voyages
  • Historique
    • juillet 2009
    • mars 2009
    • février 2009
    • janvier 2009
    • janvier 2008
    • septembre 2007
    • août 2007
    • juillet 2007
    • juin 2007
    • mai 2007
    • février 2007
    • janvier 2007
  • Recherche




  • Accueil
  • A Propos de
  • Léo par Norsola
  • Musique
  • Photos

© Copyright warpdesign.fr. Tous droits réservés.
Design par FTL Thème Wordpress créé par Smashing Magazine

Retour en haut