如何show/hide div 基于动态按钮状态
How to show/hide div based on dynamic button state
我有一个带有 6 个按钮(按钮 class“.course-accordion”)展开或折叠的手风琴。
在手风琴下方,我有一个 div(“collapse-bottom”),如果所有手风琴都折叠,我想隐藏它,但如果 1 个(或更多)打开,则可见。此 div 包含一个折叠所有按钮。
如果按钮 class 包含 'active',我已经尝试 show/hide,如果手风琴内容的最大高度为 show/hide,我已经尝试 show/hide 0/100%。我似乎无法让它工作。
有什么想法吗? jQuery 或 Javascript 在这里都可以。
示例代码标记:
<div class="course-wrapper">
<button class="course-accordion active">Course 01</button>
<div class="course-panel">Course Content</div>
</div>
<div class="course-wrapper">
<button class="course-accordion">Course 02</button>
<div class="course-panel">Course Content</div>
</div>
<div class="course-wrapper">
<button class="course-accordion">Course 03</button>
<div class="course-panel">Course Content</div>
</div>
<!-- I want this to be hidden unless one or all of the above accordions is active -->
<div class="expand-collapse">
<a class="collapse-bottom">Collapse All</a>
</div>
这只是一些伪代码的示例(抱歉,自从我编写任何 JS 或 JQuery 以来已经有一段时间了,所以请忽略这是否有帮助,但我想也许我可以帮助获得你在正确的轨道上),但这可以通过多种方式实现。
通过设置一个计数器来跟踪手风琴的状态,每次单击一个手风琴按钮时,该计数器都会更新具有 class ==“活动”的手风琴 Div 的数量。
//然后“当”计数器大于或等于 1 时,显示隐藏/显示按钮。
希望对您有所帮助。我很高兴写出一些东西,但只是想为您提供一个快速而粗略的实现,以帮助您入门。但是,如果您正在寻找更具体的东西,那么我相信我或其他人会很乐意为您提供帮助。
您可以使用 hasClass()
来检查某个元素是否具有特定的 class。
这可以使用 jquery 来完成:
<div class="course-wrapper">
<button class="course-accordion">Course 01</button>
<div class="course-panel">Course Content</div>
</div>
<div class="course-wrapper">
<button class="course-accordion">Course 02</button>
<div class="course-panel">Course Content</div>
</div>
<div class="course-wrapper">
<button class="course-accordion">Course 03</button>
<div class="course-panel">Course Content</div>
</div>
<div class="expand-collapse">
<a href="#" class="collapse-bottom">Collapse All</a>
</div>
<script src="https://code.jquery.com/jquery-3.6.0.js"></script>
<script>
function check_accord() {
//check if any button has class active and shows the collapse-bottom element
if ($(".course-accordion").hasClass("active")) {
$(".collapse-bottom").show();
} else {
$(".collapse-bottom").hide();
}
}
$(".course-accordion").click(function () {
//toggles the active class of the clicked button
$(this).toggleClass("active");
check_accord();
});
$(".collapse-bottom").click(function () {
//removes the active class from all the buttons when collapse bottom is clicked
$(".course-accordion").removeClass("active");
check_accord();
});
check_accord(); //executes the function each time the webpage is loaded
</script>
我有一个带有 6 个按钮(按钮 class“.course-accordion”)展开或折叠的手风琴。
在手风琴下方,我有一个 div(“collapse-bottom”),如果所有手风琴都折叠,我想隐藏它,但如果 1 个(或更多)打开,则可见。此 div 包含一个折叠所有按钮。
如果按钮 class 包含 'active',我已经尝试 show/hide,如果手风琴内容的最大高度为 show/hide,我已经尝试 show/hide 0/100%。我似乎无法让它工作。
有什么想法吗? jQuery 或 Javascript 在这里都可以。
示例代码标记:
<div class="course-wrapper">
<button class="course-accordion active">Course 01</button>
<div class="course-panel">Course Content</div>
</div>
<div class="course-wrapper">
<button class="course-accordion">Course 02</button>
<div class="course-panel">Course Content</div>
</div>
<div class="course-wrapper">
<button class="course-accordion">Course 03</button>
<div class="course-panel">Course Content</div>
</div>
<!-- I want this to be hidden unless one or all of the above accordions is active -->
<div class="expand-collapse">
<a class="collapse-bottom">Collapse All</a>
</div>
这只是一些伪代码的示例(抱歉,自从我编写任何 JS 或 JQuery 以来已经有一段时间了,所以请忽略这是否有帮助,但我想也许我可以帮助获得你在正确的轨道上),但这可以通过多种方式实现。
通过设置一个计数器来跟踪手风琴的状态,每次单击一个手风琴按钮时,该计数器都会更新具有 class ==“活动”的手风琴 Div 的数量。
//然后“当”计数器大于或等于 1 时,显示隐藏/显示按钮。
希望对您有所帮助。我很高兴写出一些东西,但只是想为您提供一个快速而粗略的实现,以帮助您入门。但是,如果您正在寻找更具体的东西,那么我相信我或其他人会很乐意为您提供帮助。
您可以使用 hasClass()
来检查某个元素是否具有特定的 class。
这可以使用 jquery 来完成:
<div class="course-wrapper">
<button class="course-accordion">Course 01</button>
<div class="course-panel">Course Content</div>
</div>
<div class="course-wrapper">
<button class="course-accordion">Course 02</button>
<div class="course-panel">Course Content</div>
</div>
<div class="course-wrapper">
<button class="course-accordion">Course 03</button>
<div class="course-panel">Course Content</div>
</div>
<div class="expand-collapse">
<a href="#" class="collapse-bottom">Collapse All</a>
</div>
<script src="https://code.jquery.com/jquery-3.6.0.js"></script>
<script>
function check_accord() {
//check if any button has class active and shows the collapse-bottom element
if ($(".course-accordion").hasClass("active")) {
$(".collapse-bottom").show();
} else {
$(".collapse-bottom").hide();
}
}
$(".course-accordion").click(function () {
//toggles the active class of the clicked button
$(this).toggleClass("active");
check_accord();
});
$(".collapse-bottom").click(function () {
//removes the active class from all the buttons when collapse bottom is clicked
$(".course-accordion").removeClass("active");
check_accord();
});
check_accord(); //executes the function each time the webpage is loaded
</script>