function xysimg(){ //响应式图片按照宽高比例自动裁剪 var t_img; // 定时器 var isload = true; // 控制变量 isimgload(function() { $('body').find('.xysimg').each(function() { var thi = $(this); //图片容器宽高比 var rqbfb = thi.outerheight()/thi.outerwidth(); if (thi.hasclass('xysimgqt')) { //需要显示图片全貌 thi.find('img').each(function() { var th = $(this); //图片宽高比 var tpbfb = this.naturalheight/this.naturalwidth; if(rqbfb >= tpbfb){ th.css({"max-width":"100%","height":"auto"}); }else{ th.css({"max-height":"100%","width":"auto"}); } }); } else { //需要填满图片容器 thi.find('img').each(function() { var th = $(this); //图片宽高比 var tpbfb = this.naturalheight/this.naturalwidth; if(rqbfb >= tpbfb){ th.css({"max-height":"100%","width":"auto"}); }else{ th.css({"max-width":"100%","height":"auto"}); } }); } }) }); // 判断图片加载的函数 function isimgload(callback) { // 查找所有图,迭代处理 $('body').find('.xysimg').find('img').each(function() { // 找到为0就将isload设为false,并退出each //防止图片没有上传导致代码无法执行 if($(this).attr('src') != ""){ if (this.height === 0) { isload = false; return false; } } }); // 为true,没有发现为0的。加载完毕 if (isload) { cleartimeout(t_img); // 清除定时器 // 回调函数 callback(); // 为false,因为找到了没有加载完成的图,将调用定时器递归 } else { isload = true; t_img = settimeout(function() { isimgload(callback); // 递归扫描 }, 500); // 我这里设置的是500毫秒就扫描一次,可以自己调整 } } } xysimg();