如何避免每个页面挂起的页面jquery

时间:2016-05-24 10:26:30

标签: javascript jquery performance

$.each(dataresp, function(key,val){
        cnt=cnt+1;
        var idval=cnt+"_content";
        var str = '<div id="'+idval+'"></div>'
         $(".Container").append(str);
         myProcessMethod(idval);// in this method I used to fill the above div with content
    }); 


when there is too much data , html page is not showing . browser page got freeze until the loop finishes. 

完成循环后,能够看到该页面。     如何避免冻结。即。在逐个完成后在浏览器页面中显示数据。

2 个答案:

答案 0 :(得分:0)

您可以创建文档片段,在其中附加元素,然后将片段附加到DOM。

var docFrag = document.createDocumentFragment();

$.each(dataresp, function(key,val){
         cnt=cnt+1;
         var idval=cnt+"_content";
         var d = document.createElement('div');
         d.id = idval;
         docFrag.appendChild(d);
         myProcessMethod(idval);// in this method I used to fill the above div with content
    }); 

$(".Container").append(docFrag)

答案 1 :(得分:0)

$.each(dataresp, function(key,val){
        _.defer(function(){
            cnt=cnt+1;
            var idval=cnt+"_content";
            var str = '<div id="'+idval+'"></div>'
            $(".Container").append(str);
            myProcessMethod(idval);
       });
    })

defer是下划线的函数,只是setTimeout(fn,0)的别名, 前端js,所有重函数都应该作为延迟运行。