2010-09-22 3 views
1

Pour faire simple:

Est-ce:

var x = $('#selector-id'); 
x.slideDown(); 

Plus rapide que:

var x = $('#selector-id'); 
$(x).slideDown(); 

Répondre

2

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).

+0

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! :) –

2

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.

+0

Je n'appellerais pas 'getElementById()' "traversant le DOM", mais oui c'est du gaspillage :) –

+0

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! –

+0

@Nick - dans ce cas, je suppose que non, mais je pense au cas plus général de 'var x = someKindOfSelectorAsAString;' – Skilldrick

0

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.

0

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.

Questions connexes