Bonjour,

Question vraiment bête donc, comment vérifier si une div possède une div qui à un certaine id :

<div id="principal">
        <div id="secondaire1"></div>
        <div id="secondaire2"></div>
        <div id="secondaire3"></div>
</div>

J'ai essayé avec l'attribut .children car comme il est dit dans la doc "search through the children of these elements" mais le problème c'est que pour moi l'action ce fait partout pourtant #secondaire2 n'est lui présent que sur certaines pages..

if( $('#principal').children('#secondaire2') ){
        //une action
}

Merci :)

6 réponses


G1.3
Réponse acceptée

Salut

Il suffit d'ajouter un .length:

if ($('#principal').children('#secondaire2').length) {
        console.log('ok');
}

ou

if ($('#principal').has('#secondaire2').length) {
        console.log('ok');
}

C'est mieux ?

Bonjour,
Aucune question n'est stupide,
Je te renvoie donc vers la doc de jQuery https://api.jquery.com/has/

Merci, j'ai déjà testé avec .has() mais j'ai le même problème. Il fait l'action alors que cette id secondaire2 n'est pas présent..

Oui super :)

Tu peux m'expliquer pourquoi il faut l'utiliser ?

Pense à faire des console.log quand tu ne sais pas pourquoi la condition ne fait ce que tu souhaites.

en l'occurence, tu aurais vu qu'il existe une propriété "length" qui vaut 0 lorsqu'il n'y a aucun résultat trouvé. (et X quand il y a X résultats trouvés).

Je passe mon temps à en faire t'inquiète :) Mais je ne comprends pas pourquoi l'utiliser c'est pour ça