Pour sélectionner un enfant dans jQuery, on peut utiliser children() mais aussi find().
Par exemple :
``
donne le même résultat que :
``
Maintenant, quelle option est plus rapide ou préféré et pourquoi ?
Pour sélectionner un enfant dans jQuery, on peut utiliser children() mais aussi find().
Par exemple :
``
donne le même résultat que :
``
Maintenant, quelle option est plus rapide ou préféré et pourquoi ?
children()
ne regarde que les enfants immédiats du nœud, tout en find()
traverse l'ensemble de DOM-dessous du nœud, de sorte children()
devrait être plus rapide équivalente implémentations. Toutefois, find()
utilise natif du navigateur méthodes, children()
utilise JavaScript interprété dans le navigateur. Dans mes expériences, il n'y a pas beaucoup de différence de performances dans les cas typiques.
Pour utiliser dépend de si vous voulez seulement de considérer les descendants immédiats ou tous les nœuds dessous de celui-ci dans les DOM, c'est à dire, de choisir la méthode appropriée basée sur les résultats que vous désirez, pas de la vitesse de la méthode. Si la performance est vraiment une question, essayez de trouver la meilleure solution et l'utiliser (ou de voir certains des acteurs de référence dans les autres réponses ici).
Cette jsPerf test suggère que find() est plus rapide. J'ai créé une plus approfondie de test, et il semble toujours comme si find() surpasse les enfants().
Mise à jour: Comme par tvanfosson commentaire, j'ai créé un autre cas de test avec 16 niveaux d'imbrication. find() est plus lent lors de la recherche de tous les possibles divs, mais find() encore surpasse les enfants() lors de la sélection du premier niveau de divs.
les enfants() commence à se surpasser find() quand il y a plus de 100 niveaux d'imbrication et autour de 4000+ vrd pour find() pour le traverser. C'est rudimentaire de cas de test, mais je pense toujours que find() est plus rapide que chez les enfants() dans la plupart des cas.
Je traversai le code jQuery dans Chrome Developer Tools et a remarqué que les enfants() à l'interne effectue des appels à la fratrie(), filter(), et passe par un peu plus de regexes que find ().
find() et les enfants (de) répondre à des besoins différents, mais dans le cas où les trouver() et les enfants (les) sortie le même résultat, je vous conseille d'utiliser find().
Ceux qui ne donnent pas nécessairement le même résultat : vous permet d’obtenir n’importe quel nœud *descendant* , alors que
vous obtiendrez uniquement les enfants immédiats qui correspondent.
Ainsi, `` sera plus lent car il doit rechercher pour chaque nœud descendant qui pourrait être un match et les enfants non seulement immédiats.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.