本文介绍了我想。当$函数使用image.onload的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我加载图像内loop.I动态有一定的要求,使得
在以下code当我加载图像,然后再只消防警报和警报,然后1的火灾时,然后只警告2火灾。

我的code是

 的for(int i = 0;我小于5;我++)
     {
    $。当(函数(){   VAR img771 =新的图像();    img771.src = imggg [I]
    img771.onload =功能(){
        警报(1);
       //图像变装之后再然后只警告2火灾完成的功能。
    }
    }).done(函数(){
        警报(2);    });
    }


解决方案

图像加载转换成(jQuery的)承诺,请使用:

 函数imageLoad(URL){
    返回$ .Deferred(功能(DEF){
        VAR IMG =新的图像();
        img.onload =功能(){
            def.resolve(IMG);
        };
        img.src =网址;
    });
}

您可以创建承诺的数组,你的图像:

  VAR承诺= imggg.map(imageLoad);

,然后传递到 $当

  $。when.apply($,承诺)。然后(函数(){
     的console.log(加载的所有图像);
});

I am loading images dynamic inside loop.I have some requirement such that in following code when I am loading image then and then only alert fire and when alert 1 fires then and then only alert 2 fire.

My code is

   for(int i=0;i<5;i++)
     {
    $.when(function(){

   var img771 = new Image();

    img771.src = imggg[i];
    img771.onload=function(){
        alert("1");
       //after image becomes loaded then and then only alert 2 fires in Done functionality.
    }


    }  ).done(function () {
        alert("2");

    });
    }
解决方案

To convert image loading into a (jQuery) promise, use:

function imageLoad(url) {
    return $.Deferred(function(def) {
        var img = new Image();
        img.onload = function() {
            def.resolve(img);
        };
        img.src = url;
    });
}

You can then create an array of Promises for your images:

var promises = imggg.map(imageLoad);

and then pass that to $.when:

$.when.apply($, promises).then(function() {
     console.log("all images loaded");
});

这篇关于我想。当$函数使用image.onload的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-25 05:13