2010-05-28 4 views
2

Puis-je déterminer le nombre d'objets jQuery sur une page?comment déterminer combien d'objets jQuery sont sur une page?

Je veux utiliser le nombre d'éléments comme une sorte de référence faible pour la complexité de la page. Je pense que si je peux réduire le nombre d'éléments que jQuery connaît, la page pourrait fonctionner plus efficacement.

Est-ce que cela a du sens?

Est-ce aussi simple que de faire un * sélectionner et compter les résultats?


connexes:
How can I clear content without getting the dreaded “stop running this script?” dialog?

Répondre

4

http://api.jquery.com/size/

var elementCount = $('*').size(); 

Bien que cela puisse être plus ce que vous voulez:

var elementCount = $('body').find('*').size() 
0
var elementCount = $('*').length; 

Cela n'a pas vraiment grand-chose à voir avec jQuery, sauf dans la mesure où il est un moyen pratique pour obtenir la réponse.

3
var n= 0; 
for (var i in jQuery.cache) 
    n++; 

maintenant n contient le nombre d'éléments jQuery a 'touché' (données ajoutées, telles que gestionnaires d'événements).

Auparavant, c'était beaucoup, car il «touche» chaque élément, il était même en vérifiant pour les données. Ce désagrément est corrigé dans jQuery 1.4. En ce qui concerne l'effacement du contenu, oui, vous pouvez utiliser innerHTML= '' pour supprimer tout le contenu sans donner à jQuery la possibilité de détacher ses données très lentement. Si vous savez qu'il n'y a pas d'éléments "touchés" dans l'élément, c'est une perte de mémoire potentielle jusqu'à ce que la page soit rechargée, car les données inutilisées restent en permanence. L'utilisation de la liaison d'événements live()/delegate() évite d'ajouter des données à ses éléments cibles, ce qui peut vous permettre d'utiliser ce raccourci plus librement. Cependant, si vous avez de nombreux événements à lier et que ce ne sont pas des sélecteurs qui sont très faciles à faire correspondre rapidement, cela peut ralentir la gestion des événements.

(Parce qu'il n'y a pas de navigateur speedup natif comme querySelectorAll pour les éléments correspondant contre un sélecteur particulier que la délégation doit faire, ce qui est proposé pour le niveau 2. API Selectors-)

+0

1 - Je me demandais à ce sujet . Je savais que jQuery ajoutait un numéro de série aux éléments, mais ne savait pas où jQuery les référençait. – user113716

+0

Merci, très utile. – Cheeso

Questions connexes