layui中select实现多选的级联选择,当数据多的时候页面渲染慢

问题: 使用layui中form实现多选的select级联选择效果,在select中被选中的元素多的时候,前端渲染的效果很慢!!!

    代码:

    

1 form.on('select(第一个select)', function (data) { // 打开控制台查看效果
2      var itemStr = data.value.toString();
3    $('#第二个selectId').val(itemStr );
4    ...//此处省略根据第二个selected的数据获取第三个select中被选中的select的代码
5    $('#第三个selectId').val(itemStr );
6    form.render();
7 })
 

                                      

 

 

 

     选中第二条数据最少要等三秒才能完成前端的渲染

解决办法:(感觉这种方法是最笨的,但也还没有找到更好的,有更好的办法希望交流)

    使用原生渲染,改完后很流畅!!!!

    代码:

 1 form.on('select(第一个select)', function (data) {
 2   var selected = [];
 3   ...// 此处省略从后台获取selected的代码
 4   // 获取第二个select中所有option(layui修改框架中使用dd来代替option)
 5   var Ele = $('#第二个select的Id').next('.layui-form-select').find('dd');
 6   // 循环所有option找到被选中的option给其添加是哪个被选中的类名(layui修改框架中规定的被选中类名为:layui-form-checked)
 7   for(var j = 0; j < Ele.length; j ++) {
 8       var currentVal = Ele.eq(j).attr('lay-value');
 9       if(selected.indexOf(currentVal) > -1) {
10           Ele.eq(j).find('div').addClass('layui-form-checked');
11       }
12   }
13   // 清空上一次显示在select框中的值(layui修改框架中将被选中值放在.multiSelect元素中显示,i为规定的图标)
14   $('#第二个selectId').next('.layui-form-select').find('.multiSelect').html('<i class="layui-edge"></i>');
15   // 循环所有被选中的值插入其中(插入格式也要符合原有框架)
16   for(var k = 0; k < selected.length; k ++) {
17       var selectedOption = $('<a href="javascript:;"><span lay-value="' + selected[k] + '"> ' + selected[k] + ' </span><i></i></a>');
18       $('第二个selectId').next('.layui-form-select').find('.multiSelect').append(selectedOption);
19     }
20     ...//此处省略第三个select的渲染代码
21 })
 
                  

 

posted on 2020-03-26 15:43  小雨子1993  阅读(2254)  评论(0编辑  收藏  举报

导航