jQuery.fn.areAll = function(arg) {
return this.get().every(function(e) {
return $(e).is(arg);
});
};
$(document).ready(function() {
function hidden_all() {
if ($('.hidden_1, .hidden_2, .hidden_3').areAll(':visible')) {
$(".togglehidden_all").removeClass("show").addClass("hide");
} else if ($('.hidden_1, .hidden_2, .hidden_3').areAll(':hidden')) {
$(".togglehidden_all").removeClass("hide").addClass("show");
}
}
$(".hidden_all").click(function() {
if ($(".hidden_1, .hidden_2, .hidden_3").areAll(":visible")) {
$(".togglehidden_all").removeClass("show").addClass("hide");
} else if ($(".hidden_1, .hidden_2, .hidden_3").areAll(":hidden")) {
$(".togglehidden_all").removeClass("hide").addClass("show");
}
});
$(".togglehidden_all").click(function() {
if ($(".hidden_1, .hidden_2, .hidden_3").areAll(":visible")) {
$(".hidden_1, .hidden_2, .hidden_3").slideUp("slow");
$(".togglehidden_1, .togglehidden_2, .togglehidden_3").removeClass("show").addClass("hide");
$(".togglehidden_all").removeClass("hide").addClass("show");
} else {
$(".hidden_1, .hidden_2, .hidden_3").slideDown("slow");
$(".togglehidden_1, .togglehidden_2, .togglehidden_3").removeClass("hide").addClass("show");
$(".togglehidden_all").removeClass("show").addClass("hide");
}
});
$(".togglehidden_1").click(function() {
if ($(".hidden_1").is(":visible")) {
$(".hidden_1").slideUp("slow");
$(".togglehidden_1").removeClass("show").addClass("hide");
hidden_all();
} else {
$(".hidden_1").slideDown("slow");
$(".togglehidden_1").removeClass("hide").addClass("show");
hidden_all();
}
});
$(".togglehidden_2").click(function() {
if ($(".hidden_2").is(":visible")) {
$(".hidden_2").slideUp("slow");
$(".togglehidden_2").removeClass("show").addClass("hide");
hidden_all();
} else {
$(".hidden_2").slideDown("slow");
$(".togglehidden_2").removeClass("hide").addClass("show");
hidden_all();
}
});
$(".togglehidden_3").click(function() {
if ($(".hidden_3").is(":visible")) {
$(".hidden_3").slideUp("slow");
$(".togglehidden_3").removeClass("show").addClass("hide");
hidden_all();
} else {
$(".hidden_3").slideDown("slow");
$(".togglehidden_3").removeClass("hide").addClass("show");
hidden_all();
}
});
});
.show {
color: white;
background-color: green;
}
.hide {
color: white;
background-color: red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<table>
<tbody>
<tr>
<td class="togglehidden_all">+/-</td>
</tr>
<tr>
<td class="togglehidden_1">1</td>
</tr>
<tr>
<td class="hidden_1">2</td>
</tr>
<tr>
<td class="togglehidden_2">3</td>
</tr>
<tr>
<td class="hidden_2">4</td>
</tr>
<tr>
<td class="togglehidden_3">5</td>
</tr>
<tr>
<td class="hidden_3">6</td>
</tr>
<tr>
<td class="hidden_all">hidden_all click function Test</td>
</tr>
</tbody>
</table>
Note : Click the "+/-" first to give initial classes for this example.
Clicking on "+/-" shows/hides divs 2, 4 and 6 all together Clicking on div1 toggles show/hide div2 Clicking on div3 toggles show/hide div4 Clicking on div3 toggles show/hide div4
When div1, div2, and div3 are all opened one by one the "+/-" updates to the hide class (red). However, when they are all closed one by one it does not update to the show class (green). Ie it does not work in reverse strangely
(It will update correctly if I run the function manually via $(".hidden_all").click(function() i.e. clicking on "hidden_all click function Test". As such I tried triggering this function from within the other functions but it had no effect on the problem).
Thanks in advance.