2010-06-23 4 views
9

Je me sens comme $('.selector', myContext) et myContext.find('.selector') sont deux façons identiques d'obtenir la même information. Y a-t-il une raison pratique pour utiliser l'un plutôt que l'autre? Vitesse peut-être?

Répondre

10

$('.selector', myContext) et $(myContext).find('.selector') sont complètement équivalents:

De la source jQuery 1.4.2 (core.js):

//... 

// HANDLE: $(expr, context) 
// (which is just equivalent to: $(context).find(expr) 
} else { 
    return jQuery(context).find(selector); 
} 

//... 
+0

Je me souviens d'un billet de blog ou quelque chose, probablement de John Resig, qui désapprouve le « contexte » de style second paramètre. – Pointy

+0

merci pour cette réponse – Jason

+1

@Pointy si vous pouviez trouver un lien, cela vous dérangerait-il de poster ici? J'ai déjà utilisé le parametre contextuel et j'aime ajuster mes pratiques de codage de la manière recommandée. – jinglesthula

1

Le premier concerne les caractères un peu moins de code, mais autre que la même chose

0

Lorsqu'un nouvel objet jQuery est créé le constructeur essaie de comprendre ce qui se passait dans Lorsque le contexte est un DOMElement jQuery transforme $ (sélecteur, contexte) dans $ (contexte).. trouver (sélecteur). Vous pouvez éviter une grande partie de la logique du constructeur, y compris l'analyse des chaînes en effectuant ce changement vous-même. (extrait du message suivant: http://engineeredweb.com/blog/10/12/3-tips-make-your-jquery-selectors-faster/ )