首页 > 代码库 > ajax读取图片后排列问题(先加载完图片再排列)

ajax读取图片后排列问题(先加载完图片再排列)

网上找了个瀑布流的图片排列插件。从数据库读取图片路径后显示时出现了位置重叠问题。

 1     $.ajax({ 2         type: "POST", 3         url: "index.aspx", 4         data: { ‘action‘: ‘SelectImage‘}, 5         dataType: "json", 6         success: function (result) { 7             var imgpanel = $("#imgitem"); 8             var index = 1; 9             for (var i in result)10             {11                 imgpanel.append("<div class =‘item‘><img src =http://www.mamicode.com/‘" + result[i] + "‘/></div>");12             }13             PBL(‘main‘, ‘item‘);//瀑布流排序14         }, error: function (x, e) {15             alert("error:"+ x.responseText);16         }17     });

 

在执行瀑布流排序的时候一些图片还未加载完成,导致图片重叠在了一起。

通过调用img中的onload方法判断图片是否加载完成,加载完成再进行瀑布流排列

修改如下:

 1     $.ajax({ 2         type: "POST", 3         url: "index.aspx", 4         data: { ‘action‘: ‘SelectImage‘}, 5         dataType: "json", 6         success: function (result) { 7             var imgpanel = $("#imgitem"); 8             var index = 1; 9             for (var i in result)10             {11                 var img = new Image();12                 img.src =http://www.mamicode.com/ result[i];13                 imgpanel.append("<div class =‘item‘><img src =http://www.mamicode.com/‘" + result[i] + "‘/></div>");14                 img.onload = function () {15                     if (index == result.length) {16                         PBL(‘main‘, ‘item‘);//瀑布流排序17                     }18                     index++;19                 }20             }21         }, error: function (x, e) {22             alert("error:"+ x.responseText);23         }24     });

 

ajax读取图片后排列问题(先加载完图片再排列)