2013-03-06 2 views
2

Quels sont les inconvénients et les avantages de la méthode de chaînage dans jQuery?Quels sont les inconvénients et les avantages de la méthode de chaînage dans jQuery?

Est-il plus rapide que de re-déclarer le sélecteur?

+0

Pour faire une question plus concrète: enchaînement * par opposition à quoi? * – deceze

+0

J'ai dit à la deuxième ligne, à l'opposé de re-déclarer le sélecteur. –

+0

Qu'en est-il de 'i = $ ('foo'); i.bar(); i.baz(); '? Considérez-vous ce chaînage? Parce que c'est juste la main longue pour les opérations enchaînées. – deceze

Répondre

2

Très probablement les avantages sont,

que Votre code est court et facile à manage.It donne de meilleures performances (plus rapide). Et la chaîne commence de gauche à droite. Donc, la plupart des autres seront appelés en premier et ainsi de suite.

Lorsque le chaînage est utilisé, JQuery doit rechercher les éléments une fois et exécuter toutes les fonctions attachées une par une.

Un inconvénient de l'enchaînement peut être de l'utiliser inutilement trop, alors il peut entraîner une dégradation des performances.

par exemple: - Code 1:

​$(document).ready(function(){ 
    $('#myContent').addClass('hello'); 
    $('#myContent').css('color', 'blue'); 
    $('#myContent').fadeOut('fast'); 
});​ 

Code 2:

$(document).ready(function(){ 
    $('#myContent').addClass('hello') 
      .css('color', 'blue') 
      .fadeOut('fast');  
});​ 

Ces deux code fait la même chose. et le code 2 utilise le chaînage et il est plus rapide et plus court dans le code. Et dans le code 1, JQuery doit rechercher tout le DOM pour trouver l'élément et ensuite il exécute la fonction dessus.

+2

Je me rends compte de ce que vous obtenez, mais dire que jQuery "doit chercher tout le DOM" dans le premier exemple est un peu trompeur ... en interne jQuery appellera simplement getElementById() dans ce cas, ce qui est une opération très rapide, même si c'est encore un peu comme une recherche de tableau de sorte que le deuxième exemple est très légèrement plus rapide. Cela ferait une plus grande différence avec les sélecteurs de classe et d'autres sélecteurs plus complexes, en particulier dans les anciens navigateurs. –

1

Avantages du procédé de chaînage:

  1. sélecteur est évalué uniquement une fois pour de multiples opérations. Meilleure performance, code plus petit.
  2. Le résultat du sélecteur peut être utilisé pour plusieurs méthodes sans avoir à l'affecter à une variable locale. Code plus compact.
  3. Plusieurs méthodes peuvent être plus compactes sur une ligne.
  4. Beaucoup plus compact spécifiquement quand vous voulez des opérations sur des résultats différents consécutifs tels que $(this).next().find("span.title").closest(".section").hide();. Sans chaînage, vous auriez besoin de quatre variables locales différentes là où cela n'en a pas besoin.

Inconvénients de chaîner:

  1. Le résultat de sélection n'a pas été enregistré dans une variable locale pour des utilisations plus complexes qui ne peuvent se faire qu'avec l'enchaînement.
  2. L'encombrement d'un trop grand nombre de méthodes chaînées consécutives sur une ligne peut compromettre la lisibilité du code si elle s'étend pour créer une très longue ligne de code. (On peut toujours utiliser le chaînage, mais il suffit d'insérer des sauts de ligne occasionnels dans le chaînage pour éviter cela).
+0

Merci pour votre réponse jfriend –

1

Oui, cela peut être plus rapide, mais pas en comparaison avec le stockage de l'objet jQuery dans une variable, qui est tout aussi rapide.

par exemple.ceci:

var elements = $('.myClass').find('p'); 
elements.next() 

devrait être tout aussi rapide que cela:

$('.myClass').find('p').next()

La plupart du temps, il se résume à la lisibilité ... parfois de méthodes enchaînées rend le code plus lisible, mais si vous obtenez emporté, il peut le rendre moins lisible.

+0

merci pour votre réponse Matt B. –

Questions connexes