【发布时间】:2020-10-21 14:48:56
【问题描述】:
我有三个按钮 - 每个按钮都有一个 .toggleClass() 显示/隐藏不同的元素。这是按预期工作的:当我打开和关闭按钮时,它们各自的 div 会显示和隐藏。
那太好了,这里有一个最小的简化版本的代码,你可以看看我到目前为止所取得的成就:
// Toggles for filter groups
$('.z-btn-weapons').on('click', function(e) {
$('.z-weapons').toggleClass("z-shown");
});
$('.z-btn-armors').on('click', function(e) {
$('.z-armors').toggleClass("z-shown");
});
$('.z-btn-miscs').on('click', function(e) {
$('.z-miscs').toggleClass("z-shown");
});
.z-weapons, .z-armors, .z-miscs{
display: none;
}
.z-shown {
display: block;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="button-group">
<button class="z-btn-armors">Armor</button>
<button class="z-btn-weapons">Weapons</button>
<button class="z-btn-miscs">Misc</button>
</div>
<div class="z-armors">
Armor blablabla
</div>
<div class="z-weapons">
Weapons blablabla
</div>
<div class="z-miscs">
Miscellaneous blablabla
</div>
但是,我现在想要做的,也是我正在努力解决的问题是,当我刚刚切换其中一个元素时,如何隐藏另外两个元素。
例如,我打开“装甲”,然后当我接下来切换“武器”时,“装甲”应该会消失。无论我使用什么切换,广告都是无限的。
我尝试将 if/else 语句与 addClass()/removeClass() 和 show()/hide() 结合使用,但无济于事。我认为我的逻辑是错误的,因为足够多的点击会阻止它们出现:
if ($('.z-weapons').hasClass("z-shown")) {
$('.z-armors').toggleClass("z-shown");
$('.z-miscs').toggleClass("z-shown");
}
else if ($('.z-armors').hasClass("z-shown")) {
$('.z-weapons').toggleClass("z-shown");
$('.z-miscs').toggleClass("z-shown");
}
else if ($('.z-miscs').hasClass("z-shown")) {
$('.z-weapons').toggleClass("z-shown");
$('.z-armors').toggleClass("z-shown");
}
所以是的,我现在有点卡在这里。有没有人有办法解决吗?我希望在查看其中一个元素时隐藏另外两个元素。
【问题讨论】:
标签: jquery