怎么一次只能打开一个手风琴呢
How can only allow 1 accordion to open up at a time?
我有4个手风琴<--单击此处查看
-
现在,当我点击"查看报告"
-
那些btn有一个
class=".sa-hide-btn-[a,b,c,d]"
-
我的手风琴机身有一个
id="sa-collapse-[a,b,c,d]"
-
当我点击它们时,我注意到
id="sa-collapse-[a,b,c,d]"
上有一个类in
处于切换状态
我的目标
是调整我的JS,一次只允许1手风琴打开。
- 这意味着如果点击了btn中的任何一个:
- 我应该从手风琴的其余部分中去掉类
in
,只添加到被点击的部分中
对吧?我的逻辑正确吗?
考虑到这一点,我想出了
var lists = [ "a", "b", "c", "d" ];
lists.forEach(function(list) {
$(".sa-report-btn-" + list).click(function () {
$("#sa-collapse-" + list).removeClass("in");
$(".sa-hide-" + list).removeClass("hidden");
$(".sa-report-" + list).addClass("hidden");
});
$(".sa-hide-btn-" + list).click(function () {
$("#sa-collapse-" + list).addClass("in");
$(".sa-hide-" + list).addClass("hidden");
$(".sa-report-" + list).removeClass("hidden");
});
结果
每次我点击它们时,我所有的手风琴都会打开。
Fiddle
有人能告诉我我错过了什么吗?
您有一个名为list的变量,但在下面,您使用了list,也许是问题所在?
我通过这个解决了这个问题
var lists = [ "a", "b", "c", "d" ];
lists.forEach(function(list) {
$(".sa-report-btn-" + list).click(function () {
$("*[class^='sa-report-']").removeClass("hidden");
$("*[class^='sa-hide-']").addClass("hidden");
$(".sa-hide-" + list).removeClass("hidden");
$(".sa-report-" + list).addClass("hidden");
$(".panel-collapse").removeClass("in");
$("#sa-collapse-" + list).find( $(".panel-collapse") ).addClass("in");
});
$(".sa-hide-btn-" + list).click(function () {
$(".sa-hide-" + list).addClass("hidden");
$(".sa-report-" + list).removeClass("hidden");
});
相关文章:
- 链接到手风琴中的另一个选项卡,嵌入的链接将不起作用
- Bootstrap折叠手风琴一个面板打开,所有其他面板关闭
- 如果一个手风琴发出咔嗒声,如何最大限度地减少其他手风琴
- 从另一个页面链接到手风琴的一部分
- Jquery手风琴html表显示了一个<tbody>内容
- 使用jQuery删除最后一个手风琴
- AngularJS - 我需要一个手风琴,可以选择在当时打开多个面板.
- 我做了一个手风琴菜单,但没有子菜单的链接不起作用.
- 让我的button type="submit"打开另一个手风琴
- 如何在另一个手风琴列表中创建手风琴列表(2级)
- 添加一个手风琴在谷歌地图infoBubble(从谷歌地图实用程序库)
- 如何在打开另一个手风琴文本之前关闭手风琴元素
- 将jquery手风琴元素从一个手风琴移动到另一个手风琴
- 怎么一次只能打开一个手风琴呢
- 展开视图中的一个手风琴项目
- 为移动网站 jquery 和 CSS 创建一个手风琴菜单
- 当我打开一个手风琴时,如何在多个部分中关闭所有其他手风琴.
- 当另一个手风琴打开时如何关闭.
- 点击另一个手风琴打开
- 手风琴可以在移动设备上关闭所有部分,但在平板电脑和台式机上总是打开一个手风琴部分