下面的代码效果很好,除了我想访问我的函数中返回的数据但是对象还没有完成加载,所以我无法访问对象属性?
$images = $loaded_data.find('img').filter(function () {
if ($(this).attr('src').match(/\.(jpg|png|gif)$/i)) {
return $(this);
}
})
var $image_first = $images.filter(function () {
var theImage = new Image();
theImage.src = $(this).attr("src");
$(theImage).load(function () {
if (theImage.width > 200) {
goodImages = $(this);
return goodImages;
}
});
}).first();
alert($image_first.attr('src'))
在上述代码运行之前,如何阻止警报运行?
解释我想要做的事情。
我正在加载一个html块,过滤它以取出宽度超过200的所有图像,然后取出第一个并使用它作为新闻文章的源URL。
答案 0 :(得分:1)
var images = $loaded_data.find('img').filter(function () {
return this.src.match(/\.(jpg|png|gif)$/i);
}),
promises = [],
loaded = [];
$images.each(function(i, image) {
var img = new Image(),
promise = $.Deferred();
img.onload = function() {
promise.resolve();
};
img.src = image.src;
promises.push(promise);
loaded.push(img);
});
$.when.apply($, promises).done(function() {
var $image_first = $(loaded).filter(function() {
return $(this).width() > 200;
}).first();
alert($image_first);
});