7
votes

jQuery détectant l'élément inexistant

J'ai une fonction qui vérifie si une balise IMG est à l'intérieur d'un élément de figure avec une classe de "colorebox", et s'il est, d'ajouter un style supplémentaire à certains éléments. Cependant, la fonction fonctionne toujours même s'il n'y a pas d'images dans la figure Colorbox et je ne sais pas pourquoi.

Ma jQuery ressemble à ceci xxx

et voici La figure Colorbox, clairement sans élément img ... xxx

Alors pourquoi JQuery prendrait un élément qui n'existe pas?


0 commentaires

3 Réponses :


2
votes

a renvoyé un nouveau sous-ensemble JQuery. Vous voudrez si ($ (". Colorbox"). A ("img"). Longueur) Pour vérifier s'il y a des étiquettes IMG là-bas


3 commentaires

DOCS pour le soutenir: "Compte tenu d'un objet JQuery qui représente un ensemble d'éléments DOM , la méthode .has () construit un nouvel objet JQuery à partir d'un sous-ensemble des éléments correspondants. Le sélecteur fourni est testé contre les descendants des éléments correspondants; l'élément sera inclus dans le résultat si l'un de ses éléments de descendance correspond au sélecteur . "


Il semble que l'utilisation de la méthode de la longueur de la longueur empêche la fonction de fonctionner en toutes circonstances, la fonction ne se déclenche pas même s'il y a une étiquette IMG.


Voici un exemple JSFIDDLE pour montrer comment la longueur fonctionne et ce que $ (". Colorbox"). a ("img"). Des sorties de longueur et ce que $ (". Colorbox"). A des sorties ("img"). J'espère que cela aide à montrer la différence.



4
votes

Je préférerais trouver fonction xxx


0 commentaires

3
votes

Je le ferais de cette façon: xxx

et maintenant à votre problème: xxx

$ (". Colorbox ") renvoie une liste d'éléments si n'importe quel

alors vous demandez si la liste .has (" img ") ? Cela signifie que si un élément de la liste a un élément img à l'intérieur, vous obtenez une vraie à la suite de ce if-énoncé , ceci C'est pourquoi votre code ne fonctionne pas comme prévu


3 commentaires

Merci pour la réponse, mais ironiquement, je veux appliquer jQuery à d'autres éléments s'il y a une étiquette IMG, non à l'img lui-même.


à d'autres éléments? quels éléments? À l'intérieur de chaque boucle, vous pouvez appliquer JQuery à tout autre élément que vous souhaitez, non seulement à cette image.


Ah, tu as raison. J'ai réussi à le comprendre, merci beaucoup pour l'aide.