• 基于bootstrap的手风琴,并且带全选框


    基本思路如下:

    1、根据bootstrap的手风琴,自己添加复选框,这里需要注意的是复选框所在的div位置要放对,不然可能勾选不了。

    2、编写全选/取消全选的绑定事件。

    全部代码如下:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>手风琴</title>
        <!-- 最新版本的 Bootstrap 核心 CSS 文件 -->
        <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css">
        <script src="https://code.jquery.com/jquery-3.0.0.min.js"></script>
        <!-- 最新的 Bootstrap 核心 JavaScript 文件 -->
        <script src="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
        <style type="text/css">
            /*手风琴样式*/
            .collapseSelectionHeader {
                cursor: pointer;
                background-color: #dddfe4;
                padding-top: 10px;
                padding-bottom: 10px;
            }
            /**箭头图标合起来的样式*/
            /** .parent-nav表示父标签 after表示在此后加入字体图标  */
            .accordion-toggle[aria-expanded="true"]:before, .accordion-toggle[aria-expanded="false"]:before{
                content: "f077";/** 箭头向上图标*/
                vertical-align: middle;
                font-family: FontAwesome;
                font-size: 15px;
                margin-right: 3.5%;
                margin-left: 3.5%;
            }
    
            /**箭头图标展开式时的样式*/
            /** collapsed是bootstrap的属性,表示父标签展开的时候加入的图标 after表示在此后加入字体图标  */
            .accordion-toggle[aria-expanded="true"]:before {
                content: "f078";/** 箭头向下图标*/
                font-family: FontAwesome;
                vertical-align: middle;
                font-size: 15px;
                margin-right: 3.5%;
                margin-left: 3.5%;
            }
            /*手风琴头部文字*/
            .collapseSelectionHeaderText{
                display: inline-flex;
                vertical-align: middle;
            }
            /*手风琴复选框样式*/
            .accordion-inner-ul{
                list-style: none;
                padding:0;
                margin-top: 0;
                margin-bottom: 1em;
            }
            .accordion-inner-ul-li{
                margin: 14px 0;
                display: flex;
            }
            .accordion-inner-ul-li-span{
                width: 88px;
                display: inline-block;
                margin-left: 3.5%;
                line-height: 1.5;
            }
            .accordion-inner-ul-li-checkbox-group{
                box-sizing: border-box;
                margin: 0;
                padding: 0;
                color: rgba(0,0,0,.65);
                font-size: 14px;
                font-variant: tabular-nums;
                line-height: 1.5;
                list-style: none;
                -webkit-box-flex: 1;
                flex: 1;
                display: flex;
                flex-wrap: wrap;
    
            }
    
            .accordion-inner-ul-li-checkbox-group .checkbox-inline, .radio-inline {
                min-width: 60px;
                padding-left: 0!important;
            }
    
            .accordion-inner-ul-li-checkbox-group .checkbox input[type=checkbox], .checkbox-inline input[type=checkbox], .radio input[type=radio], .radio-inline input[type=radio] {
                position:unset !important;
                margin-left: 0 !important;
                margin-top: 0 !important;
                vertical-align: middle !important;
            }
    
            .accordion-toggle-width {
                width: 85%;
                display: inline-block;
            }
    
            .checkbox-inline-custom-margin {
                margin-right: 10px!important;
                margin-left: 0!important;
            }
        </style>
        <script>
            $(function () {
                //checkbox 全选/取消全选
                var xxCheckAll,zxCheckAll = false;
                function swapCheck(name,isCheckAll) {
                    if (isCheckAll) {
                        $("input[name="+ name +"]").each(function() {
                            this.checked = false;
                        });
                    } else {
                        $("input[name="+ name +"]").each(function() {
                            this.checked = true;
                        });
                    }
                    if(name === 'select-xx'){
                        xxCheckAll = !xxCheckAll;
                    }else if(name === 'select-zx') {
                        zxCheckAll = !zxCheckAll;
                    }
                }
                /*小学全选*/
                $('#xx-ALL').on('click',function() {
                    swapCheck('select-xx',xxCheckAll);
                });
                /*中学全选*/
                $('#zx-ALL').on('click',function() {
                    swapCheck('select-zx',zxCheckAll);
                });
    
                /*测试手风琴多选框*/
                $("button[name=Button1]").on('click',function () { //获得所有的name=names的input,并给他们添加click监听事件
                    var obj = getCheckArrAll();
                    var description = "";
                        $.each(obj,function (i,obj) {
                            var property=obj.nj;
                            var xm = obj.xm;
                            description+=property+" : "+xm+"
    ";
                        });
                    alert(description);
            });
                /*清空所有学生姓名的checkbox*/
                function clearCheckArrAll() {
                    $("input[name='select-xx']").prop("checked",false);
                    $("input[name='select-zx']").prop("checked",false);
                }
                //获取指定所有学生姓名的checkbox,并返回数组
                function getCheckArrAll() {
                    var sumData = [];
                    sumData =  sumData.concat(getCheckArr('select-xx'),getCheckArr('select-zx'));
                    //console.log(sumData);
                    return sumData;
                };
                //获取指定学生姓名name的checkbox,并返回数组
                function getCheckArr(name){
                    var arr = new Array();
                    $("input[name="+ name +"]:checked").each(function (key, value) {
                        var key = this.id;
                        var xm = key.substring(key.lastIndexOf("-")+1);  //学生姓名  --{key,value
                        var nj = key.substring(0, key.lastIndexOf("-"));//年级名  --数组
                        var tempJson = {
                            xm:xm,    //学生姓名
                            nj:nj       //年级
                        };
                        var value = this.value;  //学生姓名名
    
                        if(value !== "ALL"){  //全选框
                            arr.push(tempJson);
                        }
                    });
                    var tempArr = [];//存放年级名
                    var Data = [];   //存放去重后的数据
                    for (var i = 0; i < arr.length; i++) {
                        if (tempArr.indexOf(arr[i].nj) === -1) {  //如果年级名数组不存在该年级名,则添加进去,否则找到已有年级名进行添加
                            Data.push({
                                nj: arr[i].nj,
                                xm: arr[i].xm
                            });
                            tempArr.push(arr[i].nj);
                        } else {
                            for (var j = 0; j < Data.length; j++) {
                                if (Data[j].nj == arr[i].nj) {
                                    Data[j].xm += ',' + arr[i].xm ;
                                    break;
                                }
                            }
                        }
                    }
                    /* console.log(Data);*/
                    return Data;
                };
            });
    
        </script>
    </head>
    <body>
    <!--测试按钮-->
    <div>
        <button type="button" class="btn btn-primary" name="Button1">弹出所选内容</button>
    </div>
    <!--折叠面板-->
    <div style=" 100%;" id="collapseSelection">
        <div class="accordion" id="accordion2">
            <!--小学-->
            <div class="accordion-group">
                <div class="accordion-heading  collapseSelectionHeader">
                    <div class="accordion-toggle  accordion-toggle-width" data-toggle="collapse" data-parent="#accordion2" href="#collapseTwo" aria-expanded="false">
                        <div class="collapseSelectionHeaderText">小学</div>
                    </div>
                    <!--全选/全取消框-->
                    <div  style="display: inline-block;">
                        <label class="checkbox-inline">
                            <input type="checkbox" id="xx-ALL" value="ALL" name="select-xx">
                        </label>
                    </div>
                </div>
                <div id="collapseTwo" class="accordion-body collapse">
                    <div class="accordion-inner">
                        <ul class="accordion-inner-ul">
                            <!--小学一年级-->
                            <li class="accordion-inner-ul-li">
                                <span class="accordion-inner-ul-li-span">
                                    小学一年级
                                </span>
                                <div class="accordion-inner-ul-li-checkbox-group">
                                    <label class="checkbox-inline checkbox-inline-custom-margin" >
                                        <input type="checkbox" id="xx-zs" value="zs" name="select-xx"> 张三
                                    </label>
                                    <label class="checkbox-inline checkbox-inline-custom-margin" >
                                        <input type="checkbox" id="xx-ls" value="ls" name="select-xx"> 李四
                                    </label>
                                </div>
                            </li>
                            <!--小学二年级-->
                            <li class="accordion-inner-ul-li">
                                <span class="accordion-inner-ul-li-span">
                                    小学二年级
                                </span>
                                <div class="accordion-inner-ul-li-checkbox-group">
                                    <label class="checkbox-inline checkbox-inline-custom-margin" >
                                        <input type="checkbox" id="xx-ww" value="BWD" name="select-xx"> 王五
                                    </label>
                                    <label class="checkbox-inline checkbox-inline-custom-margin" >
                                        <input type="checkbox" id="xx-xm" value="FWD" name="select-xx"> 小明
                                    </label>
                                    <label class="checkbox-inline checkbox-inline-custom-margin" >
                                        <input type="checkbox" id="xx-xh" value="MUX" name="select-xx"> 小红
                                    </label>
                                </div>
                            </li>
                        </ul>
                    </div>
                </div>
            </div>
            <!--小学-->
            <!--中学-->
            <div class="accordion-group">
                <div class="accordion-heading collapseSelectionHeader">
                    <div class="accordion-toggle  accordion-toggle-width" data-toggle="collapse" data-parent="#accordion2" href="#collapseThree" aria-expanded="false">
                        <div class="collapseSelectionHeaderText">中学</div>
                    </div>
                    <!--全选/全取消框-->
                    <div  style="display: inline-block;">
                        <label class="checkbox-inline">
                            <input type="checkbox" id="zx-ALL" value="ALL" name="select-zx">
                        </label>
                    </div>
                </div>
                <div id="collapseThree" class="accordion-body collapse">
                    <div class="accordion-inner">
                        <ul class="accordion-inner-ul">
                            <!--中学一年级-->
                            <li class="accordion-inner-ul-li">
                                <span class="accordion-inner-ul-li-span">
                                    中学一年级
                                </span>
                                <div class="accordion-inner-ul-li-checkbox-group">
                                    <label class="checkbox-inline checkbox-inline-custom-margin" >
                                        <input type="checkbox" id="zx-xh" value="xh" name="select-zx"> 小黑
                                    </label>
                                    <label class="checkbox-inline checkbox-inline-custom-margin" >
                                        <input type="checkbox" id="zx-xl" value="xl" name="select-zx"> 小兰
                                    </label>
                                </div>
                            </li>
    
                        </ul>
                    </div>
                </div>
            </div>
            <!--中学-->
        </div>
    </div>
    <br />
    </body>
    </html>

    -------------------------------------------------------------------------------------------------

    QQ群:871934478

    版权所有,转载请注明源地址                          

    -------------------------------------------------------------------------------------------------

  • 相关阅读:
    css清除select默认的样式
    网站性能优化的方法--Yahoo
    jQuery写toTop(回到顶部)效果
    jquery的addClass、removeClass、toggleClass方法
    css选择器汇总
    日期对象的正确写法
    顶会热词统计
    《人月神话》读后感二
    新闻详情页实现
    第八周总结
  • 原文地址:https://www.cnblogs.com/yiliangmi/p/12759651.html
Copyright © 2020-2023  润新知