Javascript 如果复选框为“显示div”,则选中“隐藏上一个打开的div”

Javascript 如果复选框为“显示div”,则选中“隐藏上一个打开的div”,javascript,jquery,html,Javascript,Jquery,Html,这是关于这个帖子的: 我想问一下如何使用此代码,但每次单击另一个复选框时,它都会隐藏上一个div并打开一个新的div。一次只显示一个div/内容,而不是同时显示两个open。谢谢 演示:您必须使用change而不是单击函数,并在evaluate函数内部,在开始处添加以下行 function evaluate(){ var item = $(this); var relatedItem = $("#" + item.attr("data-related-item")).parent(); if(

这是关于这个帖子的:

我想问一下如何使用此代码,但每次单击另一个复选框时,它都会隐藏上一个div并打开一个新的div。一次只显示一个div/内容,而不是同时显示两个open。谢谢


演示:

您必须使用
change
而不是
单击
函数,并在evaluate函数内部,在开始处添加以下行

function evaluate(){
var item = $(this);
var relatedItem = $("#" + item.attr("data-related-item")).parent();

if(item.is(":checked")){
    relatedItem.fadeIn();
}else{
    relatedItem.fadeOut();   
}
}
$('input[type="checkbox"]').click(evaluate).each(evaluate);

在这里观看

如果我理解正确,您一次只希望打开一个
,它应该与复选框相关。我的解释是,您一次也只选中复选框,所以所有其他复选框都需要取消选中

解决方案1:使用单选按钮

解决方案2:取消选中所有复选框,然后重新选中当前复选框

显示
的解决方案基于解决方案2。只需先隐藏所有
s,然后显示相关的
。为所有的
指定一个特定的类(例如
class=“toggling”
)或名称,以用作关闭全部的选择器

$('input[type="checkbox"]').not($(this)).prop('checked',false).trigger('change');

$('input[type=“checkbox”]”)。单击(评估)。每个(评估);这样做是为了处理每个复选框,而不是针对特定的复选框。请编辑您的问题标题。标题应该是问题,而不是预期结果类似的问题在这里,当你选中另一个复选框时,你需要取消选中一个复选框,比如单选按钮。比如手风琴?
$('input[type="checkbox"]').not($(this)).prop('checked',false).trigger('change');
$('input[type="checkbox"]').on("click", function() {
    var item = $(this);
    var relatedItem = $("#" + item.attr("data-related-item")).parent();
    $('.toggling').fadeOut(); //hide all
    relatedItem.FadeIn(); //show the current one
});