Pour faire simple:
Est-ce:
var x = $('#selector-id');
x.slideDown();
Plus rapide que:
var x = $('#selector-id');
$(x).slideDown();
Pour faire simple:
Est-ce:
var x = $('#selector-id');
x.slideDown();
Plus rapide que:
var x = $('#selector-id');
$(x).slideDown();
La seconde version clone l'objet jQuery ... sans raison réelle, donc oui le premier est à la fois plus rapide et plus efficace (moins gaspilleur).
Le second exemple n'a pas de sens, comme x
est déjà un objet jQuery.
Il serait plus logique si vous avez:
var selector_string = '#selector-id';
$(selector_string).slideDown();
mais ce serait certainement plus lent que la première option que vous aurez accès DOM et de faire un nouvel objet jQuery chaque fois que vous l'utilisez.
Je n'appellerais pas 'getElementById()' "traversant le DOM", mais oui c'est du gaspillage :) –
C'est vrai, mais j'ai vu beaucoup de gens faire le second donc je me demandais juste. Je pensais que le premier était aussi plus efficace, merci pour les réponses! –
@Nick - dans ce cas, je suppose que non, mais je pense au cas plus général de 'var x = someKindOfSelectorAsAString;' – Skilldrick
Théoriquement, il est plus rapide car il fait moins appel à la fonction. Pratiquement, vous n'écririez jamais la seconde parce que x est déjà un objet jQuery.
rappelez-vous dom acessing juste ralentit votre javascript, plus vous accédez au DOM plus il devient moins efficace.
ci-dessous sont quelques exemples
var _elm= jQuery('.myElement');
_elm.DoThis();
_elm.DoThat();
2 ci-dessus sera plus rapide que écrit ci-dessous 2
jQuery('.myElement').DoThis();
jQuery('.myElement').DoThat();
// vous pouvez utiliser le profileur de Firebug pour tester.
Désolé, je n'ai jamais accepté votre réponse. J'ai en quelque sorte oublié que j'ai même demandé quelque chose ici! Je vous remercie! :) –