En utilisant jQuery, je génère par programmation un tas de div
comme ceci:
<div class="mydivclass" id="myid1">Some Text1</div>
<div class="mydivclass" id="myid2">Some Text2</div>
Quelque part ailleurs dans mon code, je dois détecter si ces DIV existent. Le nom de classe pour les divs est le même mais l'ID change pour chaque div. Une idée comment les détecter à l'aide de jQuery?
:first
ajout d'un module pourrait améliorer les performances (je ne sais pas si les performances sont un critère important pour @itgorilla), mais si cela varie énormément selon le navigateur, probablement parce qu'il modifie les fonctionnalités natives que jQuery peut utiliser pour effectuer la sélection. Voici un cas de test où le div existe , et en voici un où il n'existe pas .if (!$(".mydivclass")[0]){ /* do stuff */ }
Vous pouvez utiliser
size()
, mais jQuery vous recommande d'utiliser la longueur pour éviter la surcharge d'un autre appel de fonction:Alors:
http://api.jquery.com/size/
http://api.jquery.com/length/
METTRE À JOUR
La réponse sélectionnée utilise un test de perf, mais elle est légèrement défectueuse car elle inclut également la sélection des éléments dans le cadre de la perf, ce qui n'est pas ce qui est testé ici. Voici un test de perf mis à jour:
http://jsperf.com/check-if-div-exists/3
Ma première exécution du test montre que la récupération de propriété est plus rapide que la récupération d'index, bien que l'OMI soit assez négligeable. Je préfère toujours utiliser la longueur car pour moi, cela a plus de sens quant à l'intention du code plutôt qu'à une condition plus laconique.
la source
.length
offre actuellement la meilleure performance moyenne.Sans jQuery:
Le JavaScript natif sera toujours plus rapide. Dans ce cas: (exemple)
Si vous souhaitez vérifier si un élément parent contient un autre élément avec une classe spécifique, vous pouvez utiliser l'une des options suivantes. (exemple)
Vous pouvez également utiliser la
.contains()
méthode sur l'élément parent. (exemple)..et enfin, si vous voulez vérifier si un élément donné contient simplement une certaine classe, utilisez:
la source
la source
div
éléments de la page, puis revenir en arrière et parcourez-les pour voir s'ils ont cette classe, tout pour jeter le tableau à la fin).hasClass
est 33% plus rapide que les autres sélecteurs ici. Vérifiez jsperf.com/hasclass00div
éléments) qui contourne le problème que j'ai mis en évidence (construire le tableau). Essayez-le avec un tas de divs: jsperf.com/hasclass00/2 C'est 63% plus lent sur ma copie de Chrome, 43% plus lent sur ma copie de Firefox, 98% (!) Plus lent sur Opera. Mais de plus, il est logique qu'il soit plus lent de créer une liste de divs puis de la rechercher, plutôt que de donner au moteur de sélection toutes les informations dont il a besoin.Voici une solution sans utiliser Jquery
lien de référence
la source
C'est assez simple ...
la source
Pour tester
div
explicitement des éléments:if( $('div.mydivclass').length ){...}
la source
.mydivclass
fonction du navigateur et de la version de jQuery.div
partie du sélecteur.Le code simple est donné ci-dessous:
Pour masquer le div avec un identifiant particulier:
la source
Voici quelques façons:
Nous pouvons utiliser l'une des méthodes définies par abobe en fonction de l'exigence.
la source
La
size()
méthode renvoie simplement le nombre d'éléments que le sélecteur jQuery sélectionne - dans ce cas, le nombre d'éléments avec la classemydivclass
. S'il renvoie 0, l'expression est fausse, et donc il n'y en a pas, et s'il renvoie un autre nombre, les div doivent exister.la source
length
propriété? En outre, cela vérifie tout élément avec cette classe, pas seulement undiv
. (Maintenant, c'est peut-être ce que le PO voulait dire, même si ce n'est pas ce qu'il a dit.) Voir la réponse de Stefan Kendall qui fait ce que le PO a réellement dit (même si, encore une fois, ils ont peut-être voulu dire ce que vous avez fait).div
partie, pour deux raisons: 1) le sélecteur n'est pas lié au fait que OP utilise undiv
élément (il pourrait changer à l'avenir), et 2) dans la plupart des navigateurs et des versions de jQuery, AFAIK, cela devrait être plus rapide.length
propriété est là, pourquoi ne pas l'utiliser? Mais si c'est votre préférence, c'est bon. De l'autre, je ne savais pas que vous l'aviez édité. Si je devais le faire, je l'aurais laissé (encore une fois, il a spécifiquement dit "... si div avec ..." (je souligne) et a ensuite mentionné en outre que si cela n'avait pas d'importance si cela était undiv
ou pas, vous pourriez abandonner cette partie. Mais peu importe. :-)size()
méthode est là pour indiquer clairement que vous comptez le nombre d'éléments dans un sélecteur jQuery, et pas n'importe quel ancien tableau. Mais encore une fois, c'est juste ma préférence.vérifier si le div existe avec une certaine classe
la source
la source
la source
Dans Jquery, vous pouvez utiliser comme ça.
Avec JavaScript
la source
Voici un exemple de solution pour vérifier la classe (hasClass) en Javascript:
la source
La meilleure façon en Javascript:
la source
if ($ ("# myid1"). hasClass ("mydivclass")) {// Faites quelque chose}
la source
Utilisez-le pour rechercher toute la page
la source