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 })
 
                  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM