Comment ajouter de la classe parente en javascript?
Pas jQuery que je voudrais simplement faire $("this").parent().addClass("active");
mais dans la pure javascript. C'est parce que je ne veux pas mélanger Javascript et jQuery sur le code suivant:
var clickedPath = this.getElement();
clickedPath.classList.add("active");
var classes = clickedPath.getAttribute('class').match(/\d+/g) || [];
buttons.forEach(function(btn) {
var method = classes.indexOf(btn.getAttribute('data-date')) > -1 ? 'add' : 'remove';
btn.classList[method]('active');
//btn.parent().addClass("active");
});
Mise à JOUR
C'est le HTML cas de départ avant que les classes sont ajoutés:
<ul>
<li>1500</li>
<li>1400
<ul>
<li>1401</li>
</ul>
</li>
</ul>
Nous avons 2 situations:
- 1500 est unique et ne pas avoir un enfant
- 1400 a un enfant 1401
Si je suis l'ajout de la classe active
à 1500, c'est très bien et je peux utiliser le code fourni dans la réponse:
btn.parentNode.classList[method]('active');
Mais Si j'ajoute de la classe à 1401, également 1400 devrait l'être, si les éléments suivants sont les deux cas:
<ul>
<li class="active">1500</li>
<li>1400
<ul>
<li>1401</li>
</ul>
</li>
</ul>
Ou
<ul>
<li>1500</li>
<li class="active">1400
<ul>
<li class="active">1401</li>
</ul>
</li>
</ul>
- vous être à la recherche pour
btn.parentNode
au lieu debtn.parent()
si je suis la lecture de votre code de droit.
Vous devez vous connecter pour publier un commentaire.
Vous parlez de "je ne veux pas mélanger js et jQuery sur le code suivant" mais vous êtes en fait le mélange de vanille DOM Api avec les méthodes jQuery.
.parent
et.addClass
sont des fonctions jQuery. Vous pouvez code:.parentNode
renvoie juste un élément du DOM.Également envisager de
parentElement
comme une alternative àparentNode
:Vous avez besoin .parentNode sur l'élément.
Quelque chose comme ça.