Reputation: 6866
I have an array of classes which are returned to me from a database. Something like:
var styleClasses = ["ClassA", "ClassB", "ClassC", "ClassD"];
I have a a page where the markup is something like:
<div class="main-details">
<div class="ClassA" style="display:none;">
<div class="Inner-Details">
</div>
<div class="Inner-Details">
</div>
</div>
<div class="ClassB" style="display:none;">
<div class="Inner-Details">
</div>
<div class="Inner-Details">
</div>
</div>
<div class="ClassC" style="display:none;">
<div class="Inner-Details">
</div>
<div class="Inner-Details">
</div>
</div>
</div>
What I am trying to achieve is, whatever class is in my array I want the appropriate div to be displayed. I can loop over the array and get the value using .each
function but I don't know how to match that with the div class and show it accordingly.
Upvotes: 1
Views: 115
Reputation: 7618
Just use the jQuery function .show()
on the classes at each iteration of your .each()
.
var styleClasses = ["ClassA", "ClassB", "ClassC", "ClassD"];
$(styleClasses).each(function(){
$('.'+this).show(); // does this: $('.classA').show();
});
Upvotes: 2
Reputation: 15555
var styleClasses = ["ClassA", "ClassB", "ClassC", "ClassD"];
for (var i = 0; i < styleClasses.length; i++) {
$('.' + styleClasses[i]).show()
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="main-details">
<div class="ClassA" style="display:none;">1
<div class="Inner-Details">
</div>
<div class="Inner-Details">
</div>
</div>
<div class="ClassB" style="display:none;">2
<div class="Inner-Details">
</div>
<div class="Inner-Details">
</div>
</div>
<div class="ClassC" style="display:none;">3
<div class="Inner-Details">
</div>
<div class="Inner-Details">
</div>
</div>
</div>
Upvotes: 1
Reputation: 4480
$(function(){
var styleClasses = ["ClassA", "ClassB", "ClassC", "ClassD"];
for (var i = 0; i < styleClasses.length; i++) {
$('.'+styleClasses[i]).show();
}
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="main-details">
<div class="ClassA" style="display:none;">
<div class="Inner-Details">
ClassA
</div>
<div class="Inner-Details">
</div>
</div>
<div class="ClassB" style="display:none;">
<div class="Inner-Details">
ClassB
</div>
<div class="Inner-Details">
</div>
</div>
<div class="ClassC" style="display:none;">
<div class="Inner-Details">
ClassC
</div>
<div class="Inner-Details">
</div>
</div>
</div>
Upvotes: 1
Reputation: 138257
var styleClasses = ["ClassA", "ClassB", "ClassC", "ClassD"];
styleClasses.forEach(function(class){
Array.prototype.forEach.call(document.getElementsByClassName(class),function(el){
el.style.display="block";
});
});
Iterate over the classes and then over each element in that class and add the style.
Upvotes: 1