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?
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?
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.
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. –
Avantages du procédé de chaînage:
$(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:
Merci pour votre réponse jfriend –
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.
merci pour votre réponse Matt B. –
Pour faire une question plus concrète: enchaînement * par opposition à quoi? * – deceze
J'ai dit à la deuxième ligne, à l'opposé de re-déclarer le sélecteur. –
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