Jquery 一次只能展开一个引导4折叠
我有这个HTML,它将有多个引导4折叠卡。我需要它一次只打开一张,如果另一张打开了,所有兄弟卡都必须隐藏。请看我的密码笔 我试图编写的函数我不确定为什么它没有呈现在任何地方。现在它只是一个console.log,但请指导我正确的方向,使之成为可能 请查看codepen以查看使用JQuery的HTMLJquery 一次只能展开一个引导4折叠,jquery,html,bootstrap-4,collapse,Jquery,Html,Bootstrap 4,Collapse,我有这个HTML,它将有多个引导4折叠卡。我需要它一次只打开一张,如果另一张打开了,所有兄弟卡都必须隐藏。请看我的密码笔 我试图编写的函数我不确定为什么它没有呈现在任何地方。现在它只是一个console.log,但请指导我正确的方向,使之成为可能 请查看codepen以查看使用JQuery的HTML function expandOneOnly() { if ($(".panel").find(".collapse").hasClass("show")) { console.log(
function expandOneOnly() {
if ($(".panel").find(".collapse").hasClass("show")) {
console.log("hi");
}
function enableNotification() {
$('.notify-check').change(function() {
$(this).closest('.panel').find(".caret-icon").toggleClass("hide");
$(this).closest('.panel').find(".disabled-overlay").toggleClass("hide");
$(this).closest('.panel').find(".select-text-display").toggleClass("hide");
if ($(this).closest('.panel').find(".collapse").hasClass("show")) {
$(this).closest('.panel').find(".collapse").toggleClass("show");
$(this).closest('.panel').find(".caret-icon").toggleClass('fa-caret-up fa-caret-down');
}
expandOneOnly();
});
}
$(document).ready(function() {
overlayWidth();
enableNotification();
expandSelection();
frequencySelection();
});
我认为您可以简化此过程,使处理程序只具有:
function enableNotification() {
$('.notify-check').change(function() {
var panel = $(this).closest('.panel')
$(this).closest('.row').children().removeClass('active')
panel.addClass('active')
});
}
然后,您的CSS中有以下内容:
.active .disabled-overlay {
display: none;
}
.active .caret-icon,
.active .select-text-display,
.active .collapse {
display: inherit;
}
这样,您只需处理当前项并添加活动类,而对于所有其他项,您只需删除该类。CSS负责处理其余部分
下面的答案很好
function expandSelection() {
$(".btn-title").click(function() {
$(this).find(".caret-icon").toggleClass("fa-caret-up fa-caret-down");
if ($(this).closest(".panel").siblings().find(".collapse").hasClass("show")) {
$(this).closest(".panel").siblings().find(".collapse").removeClass("show");
$(this).closest(".panel").siblings().find(".caret-icon").toggleClass("fa-caret-up fa-caret-down");
}
});
}
查看更新的Codepen以获取完整的HTML、CSS和JQuery代码:
谢谢大家 第一个if语句缺少括号。可以通过将.not函数更改为:$this.closest.row.children.removeClass'active'来删除该函数;panel.addClass'active':甚至更好!谢谢:@ChrisHappy很抱歉,这些解决方案不起作用。我还看了这是一个工作的代码笔,它是有车的。当开关打开时,覆盖必须消失,点击价格标题时,展开应该显示。如果开关断开,扩展需要折叠。如果您单击其他价格标题,则第一个价格上的展开将崩溃,但覆盖不得重新出现。