jQuery: Vérifier si la div avec la classe de nom
À l'aide de jQuery, je suis par programmation de la génération d'un tas de div
comme ceci:
<div class="mydivclass" id="myid1">Some Text1</div>
<div class="mydivclass" id="myid2">Some Text2</div>
Quelque part dans mon code j'ai besoin de détecter si ces DIVs existent. Le nom de la classe pour les divs est la même, mais les changements d'identité pour chaque div. Aucune idée de la façon de les détecter à l'aide de jQuery?
Vous devez vous connecter pour publier un commentaire.
Vous pouvez simplifier cela en vérifiant le premier objet qui est retourné à partir de JQuery comme suit:
Dans ce cas, si il y a un truthy valeur lors de la première (
[0]
) de l'indice, alors en charge de la classe existe.Modifier 04/10/2013: j'ai créé un jsperf cas de test ici.
:first
, il y aurait aider à la performance (ne sais pas si la performance est un critère important pour @itgorilla), mais qu'il ne varie sauvagement, par navigateur, sans doute parce qu'elle modifie les fonctionnalités natives de jQuery pouvez utiliser pour faire la sélection. Voici un cas où la div existe et voici un site où il n'existe pas.if (!$(".mydivclass")[0]){ /* do stuff */ }
Vous pouvez utiliser
size()
, mais jQuery vous recommande d'utiliser la longueur d'éviter la surcharge d'un autre appel de la fonction:Donc:
http://api.jquery.com/size/
http://api.jquery.com/length/
Mise à JOUR
La réponse sélectionnée utilise un test de perf, mais c'est un peu imparfait, car il est aussi notamment la sélection d'éléments dans le cadre de la perf, ce qui n'est pas ce qui est testé ici. Voici une mise à jour du test de perf:
http://jsperf.com/check-if-div-exists/3
Mon premier run de l'essai montre que la propriété de la récupération est plus rapide que l'indice de récupération, bien que l'OMI c'est assez négligeable. Je préfère encore à l'aide de la longueur comme pour moi, il ne fait plus de sens à l'intention du code au lieu d'un plus laconique condition.
.length
offre actuellement les meilleures performances dans la moyenne.Sans jQuery:
JavaScript natif est toujours va être plus rapide. Dans ce cas: (exemple)
Si vous voulez vérifier pour voir si un élément parent renferme un autre élément à une classe spécifique, vous pouvez utiliser l'une des opérations suivantes. (exemple)
Alternativement, vous pouvez utiliser le
.contains()
méthode sur l'élément parent. (exemple)..et enfin, si vous voulez vérifier pour voir si un élément contient simplement une certaine classe, utilisation:
div
éléments sur la page, puis revenir en arrière et boucle à travers eux pour voir si ils ont la classe, de jeter le tableau à la fin).div
éléments) de ce côté-étapes le problème que j'ai évoqué (construction de la matrice). Essayez 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 l'Opéra. Mais en outre, il sens qu'il est lent à créer une liste de divs et ensuite, la recherche, plutôt que de donner le sélecteur de moteur toutes les informations dont il a besoin.id
valeurs). Juste une seconde.hasClass
est plus lent. Si presque tous les divs ont la classe,hasClass
est plus rapide sur les grands navigateurs. Je sais qui je pense est plus réaliste.hasClass
était mieux là. jsperf.com/hasclass02-half-match Encore irréaliste (à mon esprit; même classe sur la moitié de la divs sur votre page = suggère problème), mais intéressant tout de même. Je vous ferais également remarquer que aucun de ces tests de mesures de l'impact de mémoire, qui peut être un problème longues pages (apps).id
valeurs), jsperf.com/hasclass00/3:hasClass
est 24% plus lent sur Chrome 10, 42% plus lent sur Firefox 3.6, 96% plus lent sur Opera 11 (sur Linux); sur Windows 7, c'est 11% plus lent sur Chrome 10, 48% plus lent sur IE9, 69% plus lent sur Safari, et j'obtiens des résultats différents entre une cravate etlength
être ~20% plus lent sur Firefox 3.6. Sur Windows XP à l'aide d'IE7, 35% plus lent. Regardez les browserscope. (suite)1
pour "le nombre de tests", je l'ai fait plusieurs avec chacun et j'espère que vous l'avez fait avec FF4.) Mon cas de test avec un sig. nombre de divs montrent que lorsque le nombre de non-appariement des divs augmente, lahasClass
solution se dégrade, sans doute parce que l'évitables tableau grandit. Les gens à utiliser un beaucoup de divs sur leurs pages. De toute façon, les cas de test sont là pour quiconque d'essayer (@lurkers: l'esprit de la date/temps sur eux), et, séparément, je pense que j'ai fait de mon point théorique. Tout cela a beaucoup plus de temps que l'un de nous devrait avoir dépensé. La paix,Ici est une solution sans l'aide de Jquery
référence lien
C'est assez simple...
Pour tester
div
éléments explicitement:if( $('div.mydivclass').length ){...}
.mydivclass
selon le navigateur et la version jQuery.div
partie de la sélection.Le simple code est donné ci-dessous :
Pour cacher la div avec particuler id :
La
size()
méthode retourne le nombre d'éléments que le sélecteur jQuery sélectionne - dans ce cas, le nombre d'éléments avec la classemydivclass
. Si elle renvoie la valeur 0, l'expression est fausse, et donc il n'y a rien, et que si elle renvoie à tout autre nombre, les divs doit exister.length
propriété? Aussi, cette vérification pour aucun de l'élément avec la classe, et pas seulement undiv
. (Maintenant, que peut-être ce que l'OP voulait dire, même si c'est pas ce qu'il/elle dit.) Voir Stefan Kendall réponse qui fait ce que l'OP 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 que délimitée sur le fait que l'OP utilise undiv
élément (cela pourrait changer dans le futur), et 2) dans la plupart des navigateurs et versions de jQuery, autant que je sache, cela devrait être plus rapide.length
propriété est là, pourquoi ne pas l'utiliser? Mais si c'est votre préférence, juste 'nuff. Sur l'autre, je ne savais pas qu'on avais édité pour la sortir. Si je devais le faire, j'avais l'avons laissée dans (encore une fois, il a précisément dit "...si div avec..." (mon emphase) et ensuite mentionné, en outre, que si elle n'a pas d'importance si c'était undiv
ou non, vous pourriez fossé de la partie. Mais quoi que ce soit. 🙂size()
méthode est là pour indiquer clairement que vous êtes de compter le nombre d'éléments dans un sélecteur jQuery, et pas n'importe quel vieux tableau. Mais encore une fois, c'est juste ma préférence.vérifier si la div existe avec une certaine classe
Il existe de nombreuses façons de vérifier l'existence de div avec certains nom de la classe.Ci-dessous sont quelques-uns utile:
Nous pouvons utiliser l'une de la part d'abobe défini fondé sur l'exigence.
Le meilleur moyen en Javascript:
En Jquery vous pouvez l'utiliser comme ça.
Avec JavaScript
if($("#myid1").hasClass("mydivclass")){//Faire quelque chose}