【问题标题】:Show/Hide Multiple Div using multiple checkbox when checked选中时使用多个复选框显示/隐藏多个 Div
【发布时间】:2019-01-25 07:57:48
【问题描述】:

我正在尝试使用多个复选框显示/隐藏多个 div。 即,如果选中了一个复选框,它必须使用 id 或 name 定位 div,并且应该隐藏 div 内容。

尝试了以下工作,但未能达到要求的目标

<form id="varsection">
    <div class="panel box box-primary">
        <div id="controlledvariables" class="panel-collapse collapse" aria-expanded="false" style="height: 0px;">
            <div class="box-body">
                <div class="col-md-9">
                    <div class="row secrow">Wave</div>
                    <div class="row secrow">Gender</div>
                </div>
                <div class="col-md-1">
                    //if input name="Wave[]" is selected then
                    <div class="row secrow" style="text-align: center;">
                        <input type="checkbox" name="Wave[]" value="top">
                    </div>
                    <div class="row secrow" style="text-align: center;">
                        <input type="checkbox" name="Gender[]" value="top">
                    </div>
                </div>
            </div>
        </div>
    </div>
</form>
<form id="filters">
    <div>
        //show this div
        <div class="panel box box-primary">
            <div class="box-header with-border">
                <h4 class="box-title">
                    <a data-toggle="collapse" data-parent="#accordion" href="#Wave" aria-expanded="false" class="collapsed">
                    Wave
                    </a>
                </h4>
            </div>
            <div id="Wave" class="panel-collapse collapse" aria-expanded="false" style="height: 0px;">
                <div class="box-body">
                    <div class="col-md-8">
                    </div>
                    <div class="col-md-4">
                        //or this one
                        <ul>
                            <li><input type="checkbox"  name="Wave_fiters[]" value="1">Wave-1</li>
                            <li><input type="checkbox" name="Wave_fiters[]" value="2">Wave-2</li>
                        </ul>
                    </div>
                </div>
            </div>
        </div>
        [Other multiple div's]
    </div>
</form>

jQuery

jQuery(function() {
    var checks = $("[name='_Wave[]']");
    checks.click(function() {
        if (checks.filter(':checked').length == checks.length) {
            $("[name='_Wave[]']").show();
        } else {
            $("[name='_Wave[]']").hide();
        }
    }).triggerHandler('click')
})

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    这段代码有两个问题:

    首先jquery选择器是错误的应该是这样的:

    var checks = $("[name='Wave[]']");
    

    没有_

    第二个你需要给你想要切换的 div 一个唯一的 id 或一个类名

    所以你的代码应该是这样的

        jQuery(function () {
            var checks = $("[name='Wave[]']");
            checks.click(function () {
                if (checks.filter(':checked').length == checks.length) {
                    $(".waveDiv").show();
                } else {
                    $(".waveDiv").hide();
                }
            }).triggerHandler('click')
        })
    

    这是您的输入:

    <input type="checkbox" name="Wave[]" value="top">
    

    还有你的 div 将被切换:

    <div class="waveDiv panel box box-primary">
    

    【讨论】:

    • 好的,假设我选择多个复选框和多个 div 必须分别为每个复选框和 div 编写查询脚本?
    • 是的,如果这些复选框彼此不相关,您将需要处理每个复选框组的点击事件,例如,如果您有 2 个称为“Wave”的复选框和另外 2 个称为“Gender”的复选框,您将需要为 2 个类选择器处理 2 个单击事件“或”为所有处理一个单击事件,并与类名的 if 条件分开。
    • 尝试自己做,和这个差不多,如果有什么问题,我会帮忙
    猜你喜欢
    • 2014-10-30
    • 2015-10-10
    • 2013-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-18
    • 2010-11-27
    • 1970-01-01
    相关资源
    最近更新 更多