layui之layer打开table后分页无效的解决方法
1.原代码:
<body> <div id="showalladdableavms" style="display: none;width:100%"> <table id="demo" lay-filter="test"></table> </div> --> </body> <script> filldata(table,"#demo","getDateForUserJurisdiction.gds"); layer.open({ type:1, title:"添加机器", maxmin:true, area:["100%","100%"], btn:["确认添加"], content: $("#showalladdableavms").html(), success: function (layero) { var btn = layero.find('.layui-layer-btn'); btn.css({'position':'relative','top':"-93%","text-align":"left","left":"8%"}); }, btn1:function(index, layero){ //console.log(layero, index); var res = getoperavms('demo'); console.dir(res) } }); function filldata(table,id,url){ table.render({ elem: id, height:"560" ,url:url //数据接口 ,method: 'POST' ,cellMinWidth: 80 //全局定义常规单元格的最小宽度,layui 2.2.1 新增 ,page:true/* { //支持传入 laypage 组件的所有参数(某些参数除外,如:jump/elem) - 详见文档 first: true //显示首页 ,last: true //显示尾页 } */ ,limits : [10,20,30] ,limit:10 ,request: { pageName: 'page',//页码的参数名称,默认:page } ,cols: [[ //表头 {checkbox:true} ,{field: 'id', title: 'ID', width:80, sort: true} ,{field: 'avm', title: '机器编号', width:80} ,{field: 'company', title: '公司名称', width:80} ,{field: 'area', title: '区域', width:80, sort: true} ,{field: 'circuit', title: '线路', width:80} ,{field: 'position', title: '位置', width: 177} ,{field: 'goodsxml', title: '商品库', width: 80, sort: true} ]] ,where : { //传值 startDate : startDate, allavm:'yes' } ,response: { // statusName: 'code' //数据状态的字段名称,默认:code //,statusCode: 200 //成功的状态码,默认:0 //,msgName: 'message' //状态信息的字段名称,默认:msg countName: 'total' //数据总数的字段名称,默认:count ,dataName: 'rows' //数据列表的字段名称,默认:data } /* done:function(){ layer.open({ type:1, maxmin:true, area:["800px","600px"], content: $("#showalladdableavms") }); } */ }); } </script>
2.现象:分页,选择框等无法操作,查了查说是使用html()方式得到的内容会丢失dom对象的事件,如果直接用dom会出现一直无法展示dom内容的问题。
3.解决:动态添加:
var dom = $("<div id='showalladdableavms' style='display:none;width:100%'><table id='demo' lay-filter='test'></table></div>"); $('body').append(dom)
这种方式可以很好的解决写死在页面里的dom对象打开时不展示,显示呈暗灰色调的问题,同时,dom对象的事件也得到了支持,完美