美文网首页让前端飞
jquery插件-列表穿梭框

jquery插件-列表穿梭框

作者: 张中华 | 来源:发表于2020-10-26 12:31 被阅读0次

    index.html

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>jQuery穿梭框左右列表添加删除代码</title>
    <script src="https://www.jq22.com/jquery/jquery-1.10.2.js"></script>
    
    <link rel="stylesheet" type="text/css" href="css/index.css">
    
    </head>
    <body>
    
    <div class="selection-container">
        <div class="select-box left">
            <div class="select-box-title">
                <input type="checkbox" class="checkbox-all" id="checkbox-all1" />
                <label for="checkbox-all1"></label>
                <span>列表一</span>
            </div>
            <div class="select-content">
                <ul class="unselect-ul">
                    <li>
                        <input type="checkbox" class="checkboxs"  id="tyue-checkbox-blue1" />
                        <label for="tyue-checkbox-blue1"></label>
                        <span>备选项1</span>
                    </li>
                    <li>
                        <input type="checkbox" class="checkboxs" id="tyue-checkbox-blue2" />
                        <label for="tyue-checkbox-blue2"></label>
                        <span>备选项2</span>
                    </li>
                    <li>
                        <input type="checkbox" class="checkboxs" id="tyue-checkbox-blue3" />
                        <label for="tyue-checkbox-blue3"></label>
                        <span>备选项3</span>
                    </li>
                    <li>
                        <input type="checkbox" class="checkboxs" id="tyue-checkbox-blue4" />
                        <label for="tyue-checkbox-blue4"></label>
                        <span>备选项4</span>
                    </li>
                    <li>
                        <input type="checkbox" class="checkboxs" id="tyue-checkbox-blue5" />
                        <label for="tyue-checkbox-blue5"></label>
                        <span>备选项5</span>
                    </li>
                    <li>
                        <input type="checkbox" class="checkboxs" id="tyue-checkbox-blue6" />
                        <label for="tyue-checkbox-blue6"></label>
                        <span>备选项6</span>
                    </li>
                    <li>
                        <input type="checkbox" class="checkboxs" id="tyue-checkbox-blue7" />
                        <label for="tyue-checkbox-blue7"></label>
                        <span>备选项7</span>
                    </li>
                    <li>
                        <input type="checkbox" class="checkboxs" id="tyue-checkbox-blue8" />
                        <label for="tyue-checkbox-blue8"></label>
                        <span>备选项8</span>
                    </li>
                </ul>
            </div>
        </div>
        <div class="arrows-box">
            <div class="arrow-btns">
                <button class="arrow-btn right">
                    &#8250;
                </button>
                <button class="arrow-btn left">
                    &#8249;
                </button>
            </div>
        </div>
        <div class="select-box right">
            <div class="select-box-title">
                <input type="checkbox" class="checkbox-all" id="checkbox-all2" />
                <label for="checkbox-all2"></label>
                <span>列表二</span>
            </div>
            <div class="select-content">
                <ul class="selected-ul">
                    <li>
                        <input type="checkbox" class="checkboxs" id="tyue-checkbox-blue9" />
                        <label for="tyue-checkbox-blue9"></label>
                        <span>备选项9</span>
                    </li>
                    <li>
                        <input type="checkbox" class="checkboxs" id="tyue-checkbox-blue10" />
                        <label for="tyue-checkbox-blue10"></label>
                        <span>备选项10</span>
                    </li>
                    <li>
                        <input type="checkbox" class="checkboxs" id="tyue-checkbox-blue11" />
                        <label for="tyue-checkbox-blue11"></label>
                        <span>备选项11</span>
                    </li>
                </ul>
            </div>
        </div>
    </div>
    
    <!--穿梭框方法-->
    <script src="js/index.js"></script>
    
    
    </body>
    </html>
    

    index.js

    $(function(){
    
                //全选函数
                $('.checkbox-all').click(function(){
                    if($(this).prop('checked')){
                        $(this).parent().next().find('.checkboxs').prop('checked',true);
                    }else{
                        $(this).parent().next().find('.checkboxs').prop('checked',false);
                    }
                    btn_status();
                })
    
                //单个checkbox与全选的关系函数
                $('.select-content').on('click','.checkboxs',function(e){
    
                    var checkedAll = $(this).parents('.select-content').prev().find('.checkbox-all');
                    var checkboxs = $(this).prop('checked');
                    if(!checkboxs&&checkedAll.prop('checked')){
                        checkedAll.prop('checked',false);
                    }else if(checkboxs&&!checkedAll.prop('checked')){
                        var lis = $(this).parents('ul').children();
                        for(var i=0;i<lis.length;i++){
                            if($(lis[i]).find('.checkboxs').prop('checked')){
                                if(i==lis.length-1){
                                    checkedAll.prop('checked',true)
                                }
                            }else{
                                break;
                            }
                        }
                    }
                    stopFunc(e);
                });
                $('.select-content').on('click','li',function(){
                    $(this).children('.checkboxs').click();
                    btn_status();
                })
                // 动态判断改变btn状态
                function btn_status(){
                    var btn1 =document.getElementsByClassName('right')[0]
                    var btn2 =document.getElementsByClassName('left')[1]
                    var left_ul = document.getElementsByClassName('unselect-ul')
                    var right_ul = document.getElementsByClassName('selected-ul')
                    var left_ul_li = left_ul[0].children
                    var right_ul_li = right_ul[0].children
                    var left_btn = false
                    var right_btn = false
                    for(var i=0;i<left_ul_li.length;i++){
                        if(left_ul_li[i].firstElementChild.checked == true){
                            left_btn = true
                        }
                    }
                    for(var i=0;i<right_ul_li.length;i++){
                        if(right_ul_li[i].firstElementChild.checked == true){
                            right_btn = true
                        }
                    }
                    if(left_btn){
                        btn1.classList.add('btn-cursor')
                    }else{
                        btn1.classList.remove('btn-cursor')
                    }
                    if(right_btn){
                        btn2.classList.add('btn-cursor')
                    }else{
                        btn2.classList.remove('btn-cursor')
                    }
                    
                }
                //左右移按钮点击事件
                $('.arrow-btn').click(function(){
                    var checkboxs,origin,target,num=0;
                    if($(this).hasClass('right')){
                        origin = $('.unselect-ul');
                        target = $('.selected-ul');
                    }else{
                        origin = $('.selected-ul');
                        target = $('.unselect-ul');
                    }
                    checkboxs = origin.find('.checkboxs');
                    for(var i=0;i<checkboxs.length;i++){                    
                        if($(checkboxs[i]).prop('checked')){
                            var that = $(checkboxs[i]).parent().clone();
                            that.children('input').prop('checked',false);
                            target.append(that);
                            $(checkboxs[i]).parent().remove();
                        }else{
                            num++;
                        }
                    }
                    if(checkboxs.length == num){
    //                  alert('未选中任何一项');
                    }else{
                        origin.parent().prev().find('.checkbox-all').prop('checked',false);
                    }
                    btn_status();
                })
    
            })
    
    
            function stopFunc(e){
                e.stopPropagation?e.stopPropagation():e.cancelBubble=true;
            }
    

    index.css

    *{padding:0;margin:0;}
        li{
            list-style:none;
            cursor:pointer;
            position: relative;
        }
        .selection-container{
            height:350px;
            margin:10px;
        }
        .select-box{
            width:250px;
            height:100%;
            float:left;
            border: 1px solid #ebeef5;
            border-radius: 4px;
        }
        .arrows-box{
            width:110px;
            height:100%;
            float:left;
            position:relative;
        }
        .select-content{
            width:100%;
            height:320px;
            overflow-y:auto;
            overflow-x:hidden;
        }
        .select-box-title{
            height:40px;
            line-height:40px;
            font-size:16px;
            font-family:"微软雅黑";
            padding:0 6%;
            display: flex;
            align-items: center;
            position: relative;
            width: 100%;
            background: #f5f7fa;
            border-bottom: 1px solid #ebeef5;
            box-sizing: border-box;
            color: #000;
        }
        /*.checkbox-all{
            float:left;
        }*/
        .select-box-title label:before {
            left: -14px!important;
            top: 4px!important;
        }
        .select-box-title label:after {
            left: -10px!important;
            top: 5px!important;
        }
        .checkboxs{
            vertical-align:middle;
        }
        .unselect-ul{
            padding:10px 0;
        }
        .selected-ul{
            padding:10px 0;
        }
        .select-content li{
            padding:5px 15px;
            font-size:12px;
            font-family:"微软雅黑";
        }
        .select-box  input[type='checkbox'] {
        position: absolute;
        left: 13px;
        top: 3px;
        width: 20px;
        height: 20px;
        opacity: 0;
    }
    .select-box  label {
        position: absolute;
        left: 30px;
        top: 9px;
        height: 20px;
        line-height: 20px;
    }
    .select-box span{
        padding-left: 20px;
    }
    .select-box  label:before {
        content: '';
        position: absolute;
        left: -14px;
        top: -3px;
        width: 12px;
        height: 12px;
        border: 1px solid #ddd;
        border-radius: 5px;
        transition: all 0.3s ease;
        -webkit-transition: all 0.3s ease;
        -moz-transition: all 0.3s ease;
    }
    
    .select-box label:after {
            content: '';
        position: absolute;
        left: -10px;
        top: -2px;
        width: 4px;
        height: 8px;
        border: 0;
        border-right: 1px solid #fff;
        border-bottom: 1px solid #fff;
        background: #fff;
        transform: rotate(45deg);
        -webkit-transform: rotate(45deg);
        -moz-transform: rotate(45deg);
        -ms-transform: rotate(45deg);
        transition: all 0.3s ease;
        -webkit-transition: all 0.3s ease;
        -moz-transition: all 0.3s ease;
    }
    
    .select-box input[type='checkbox']:checked + label:before {
        background: #00A0E8;
        border-color: #00A0E8;
    }
    .select-box input[type='checkbox']:checked + label:after {
        background: #00A0E8;
    }
        .arrow-btns{
            width:100%;
            position:absolute;
            top:50%;
            margin-top:-45px;
        }
        .btn-cursor{
            background-color: #409eff !important;
            border:1px solid #409EFF !important;
            transition: all 0.3s ease;
            -webkit-transition: all 0.3s ease;
            -moz-transition: all 0.3s ease;
        }
        .btn-cursor svg{
            fill:#fff !important;
            transition: all 0.3s ease;
            -webkit-transition: all 0.3s ease;
            -moz-transition: all 0.3s ease;
        }
        /*.btn-cursor{
            cursor: not-allowed !important;
        }*/
        .arrow-btn{
            display: block;
            position: relative;
            width:40px;
            height:40px;
            border-radius: 25px;
            background:#eee;
            margin:0 auto 5px;
            cursor:pointer;
            border: 1px solid #dcdfe6;
            background-color: #f5f7fa;
            color: #c0c4cc;
            outline: none;
            font-size: 30px;
        }
        .arrow-btn svg{
            padding: 11px;
            width:17px;
            height:17px;
            color: white;
            fill:#C0C4CC;
        }
    

    实例参考:https://www.jq22.com/

    相关文章

      网友评论

        本文标题:jquery插件-列表穿梭框

        本文链接:https://www.haomeiwen.com/subject/uijamktx.html