Jquery+Eayui实现列表选择功能

在做一个列表选择的功能,要实现一个Jquery列表选择器的效果,如图就是很常见的一种列表选择器
在这里插入图片描述
不过网上开源的可能要积分,资料没找到合适的,所以自己就简单写了一下,其实实现也不是很难。实现思路:左边双击之后获取元素,在右边附加上就好,右边选择列表双击之后就移除元素
实现效果:
在这里插入图片描述

因为系统功能是easyui做的,页面左边是一个table,也是easyui的datagrid,所以就可以调对应方法获取双击某行的元素
创建前端页面:

<rapid:override name="content">
        <div region="west" split="true" title="待选列表" style="width:400px;" >
            <div class="site-search" >
                <div id="search">
                   <input type="text" name="s" class="text" id="areaName" placeholder="输入地区名称搜索" />
                   <button type="button" onclick="javascript:queryOption.doQuery(1);" class="submit">搜索</button>
                </div>
            </div>
            <input type="hidden" value="${tipsSeq}" id="tipsSeq"/>
            <table id="areaList"></table>
        </div>
        <div region="center" title="已选列表" style="border:0;">
            <table id="selectedList" style="width:100%;"></table>
        </div>
        <div region="south" >
            <div align="right" style="height:31px;">
                <input type="button" onclick="javascript:treeOption.closeDialog();" value="取消" />
                <input type="button" onclick="javascript:treeOption.batchBind();" value="下一步" />
            </div>
        </div>
    </div> 
    </rapid:override>

给右边的列表加上选择后就改变颜色为蓝色的css代码:

#selectedList tr:hover{
                    background-color: #99ccff; color: #252525; cursor: pointer;
                }
                #selectedList tr:selected{
                    background-color: #0095E8; color: #fff;
                }

主要函数是调用easyui的双击事件,然后将获取到的数据放在addNodeToList函数里再调用,下面给出easyui的所有代码和自己写的addNodeToList函数

onDblClickRow :function(rowIndex,rowData){
                        var selections = $("#areaList").datagrid('getSelections');
                        var areaSeq = selections[0].areaSeq;
                        var areaName = selections[0].areaName;
                        var status = selections[0].tipsAreaRelaStatus;
                        if(status =='1'){
                            $.messager.alert("操作提示","已配置过该提示语,继续配置数据将覆盖旧数据!","warning");
                            return;
                        }
                        //添加节点
                        addNodeToList(1,areaSeq,areaName,status);
                    }
$('#areaList').treegrid({    
                    fit: true,
                    nowrap: true, 
                    autoRowHeight: true,
                    animate:true,
                    scrollbarSize: 0,
                    striped: true,
                    collapsible:true,
                    singleSelect:true,
                    rownumbers:true,
                    url:'/loadTipsAreaRelatedData.do?tipsSeq='+$("#tipsSeq").val(),
                    idField:'areaSeq',
                    treeField:'areaName',
                    columns:[[
                        {field:'ck', checkbox: true, hidden:true},
                        {field:'areaSeq', hidden:true},
                        {field:'areaName',title:'地区名称',width:'60%'},
                        {field:'tipsAreaRelaStatus',title:'状态',width:'40%',
                            formatter: function (val, rowdata, index) {
                                if(val =='1'){
                                    return '<span style="color:#00B2EE;">已配置</span>';
                                }else{
                                    return '<span>未配置</span>';
                                }
                            }   
                        }
                    ]],
                    onBeforeLoad:function(row,param){//加载之前
                        if(row){
                            $(this).treegrid('options').url = '/loadSubTipsAreaRelatedData.do?tipsSeq='+$("#tipsSeq").val()+'&parentAreaSeq=' + row.areaSeq;
                        }else{
                            $(this).treegrid('options').url = '/loadTipsAreaRelatedData.do?tipsSeq='+$("#tipsSeq").val();
                        }
                    },
                    onDblClickRow :function(rowIndex,rowData){
                        var selections = $("#areaList").datagrid('getSelections');
                        var areaSeq = selections[0].areaSeq;
                        var areaName = selections[0].areaName;
                        var status = selections[0].tipsAreaRelaStatus;
                        if(status =='1'){
                            $.messager.alert("操作提示","已配置过该提示语,继续配置数据将覆盖旧数据!","warning");
                            return;
                        }
                        //添加节点
                        treeOption.addNodeToList(1,areaSeq,areaName,status);
                    }
                });
function addNodeToList(n,areaSeq,areaName,status){
                var tableStr = $("#selectedList");
                var trStr = "<tr id="+areaSeq
                +" class='datagrid-row' ondblclick='javascript:removeNodeToList("+areaSeq+");''>"
                +"<td>"+areaName+"</td></tr>";
                var tr = $("#selectedList").find("tr");
                var trNum = tr.length;
                if(trNum == 0){
                    tableStr.append(trStr);
                }else{
                    var count = 0;
                    //思路是:遍历表格,如果有元素就再添加,没有那个元素就添加
                    $("#selectedList tr").each(function(){
                        var id =$(this).attr("id");
                        if(areaSeq == id){
                            count++;
                        } 
                    });
                    if(count==0){
                        tableStr.append(trStr);
                    }
                }
            }

右边列表双击可以移除元素:

function removeNodeToList(areaSeq){
                $("#selectedList").find("#"+areaSeq).remove();
}

思路:左边双击之后获取元素,在右边附加上就好,右边选择列表双击之后就移除元素

转载于:https://www.cnblogs.com/mzq123/p/10424352.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值