Je veux trouver un élément avec la même classe que différents div et y ajouter la classe «active». Donc, dans mon exemple, je veux ajouter la classe 'active' à '.div-top .same_class-text'.
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div class="main-div"> <div class="div-top"> <div class="different_class-text1"></div> <div class="different_class-tex2"></div> <div class="same_class-text"></div> <div class="different_class-text3"></div> </div> <div class="div-bottom"> <div class="other-class same_class-text"></div> </div> </div>
.main-div, .div-top, .div-bottom {
display:flex;
}
.div-top, .div-bottom {
width:200px;
height:200px;
}
.div-top {
background:red;
}
.div-top div,
.div-bottom div {
width:50px;
height:50px;
background:yellow;
margin:10px;
}
.div-bottom {
background: blue;
}
var theClass = $('.div-bottom div').attr('class');
$('.div-top div').each(function(){
if($(this).hasClass(theClass)) {
$(this).addClass('active');
}
});
3 Réponses :
Obtenez la classe du div que vous voulez;
$("." + class).addClass("active");
Définissez la classe active sur les divs de la même classe:
var class = document.getElementById("myDIV").className;
La variable Non pas que la classe theClass contient deux classes: other-class et same_class-text . Vous pouvez vérifier si un active comme ça: <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="main-div">
<div class="div-top">
<div class="different_class-text1"></div>
<div class="different_class-tex2"></div>
<div class="same_class-text"></div>
<div class="different_class-text3"></div>
</div>
<div class="div-bottom">
<div class="other-class same_class-text"></div>
</div>
</div>
.main-div, .div-top, .div-bottom {
display:flex;
}
.div-top, .div-bottom {
width:200px;
height:200px;
}
.div-top {
background:red;
}
.div-top div,
.div-bottom div {
width:50px;
height:50px;
background:yellow;
margin:10px;
}
.div-bottom {
background: blue;
}
var theClass = $('.div-bottom div').attr('class');
$('.div-top div').each(function() {
var classes = theClass.split(" ");
for (let i = 0; i < classes.length; i++) {
if ($(this).hasClass(classes[i])) {
$(this).addClass('active');
}
}
});
active serait également ajoutée si un other-class .
Merci! Ça a marché.
"other-class same_class-text" ["other-class", "same_class-text"] en utilisant String.prototype.trim () MDN et String.prototype.split () MDN .each () , vérifiez si l'élément en cours d'itération .contains () MDN .some () MDN d'entre eux dans son classList MDN a > .toggleClass () jQuery API (ou classList.toggle de JS) comme deuxième paramètre.
<div class="main-div">
<div class="div-top">
<div class="different_class-text1"></div>
<div class="different_class-tex2"></div>
<div class="same_class-text"></div>
<div class="different_class-text3"></div>
</div>
<div class="div-bottom">
<div class="other-class same_class-text"></div>
</div>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
.main-div, .div-top, .div-bottom { display: flex; }
.div-top, .div-bottom { width: 200px;height: 200px; }
.div-top { background: red; }
.div-top div, .div-bottom div {width: 50px; height: 50px;background: yellow; margin: 10px;}
.div-bottom { background: blue; }
.active {
outline: 5px dashed black;
}
const theClass = $('.div-bottom div').attr('class'); // "other-class same_class-text"
const theClasses = theClass.trim().split(/\s+/); // ["other-class", "same_class-text"]
$('.div-top div').each(function() {
const hasSomeClass = theClasses.some(cl => this.classList.contains(cl))
this.classList.toggle('active', hasSomeClass);
});
Merci pour votre réponse!
Mais votre DIV du bas a deux classes! Maintenant, tout dépend de la logique que vous voulez: 1. soit une 2. une spécifique. ?