从JavaScript中的img.load()返回img
return img from img.load() in JavaScript
我有一个for循环:
for(var i = 0; i < r.length; i++){
var img=loadImage(r.id);
$gallery.append(img);
}
和加载图像功能:
function loadImage(id){
var $url='url/'+id;
var img = new Image();
$(img).load(function(){
return this;
})
.attr({'src':$url,'id':id});
}
在上面的函数中,我想返回img,以便我可以在for循环中使用它,但这似乎不起作用,我没有得到图像显示。我知道我可以使用$gallery.append(this)内部加载,这工作得很好,但我需要将上述方法用于其他目的。有什么建议吗,我可以这样做?谢谢。
使用jquery的load
事件来加载图像可能会有点bug(取自jquery文档):
- 它不一致也不可靠跨浏览器
- 如果图像src被设置为与之前相同的src,它在WebKit中不会正确触发
- 它没有正确地弹出DOM树
- 可以停止触发已经存在于浏览器缓存中的图像
对于您的情况,我会使用以下两种不同的方法之一:
- 回调
使用回调,您可以在异步任务完成时执行一些功能:
function loadImage(id,callback){
var $url='url/'+id;
var img = new Image();
$(img).load(function(){
if(typeof callback == 'function')
callback(this);
return this;
}).attr({'src':$url,'id':id});
}
for(var i = 0; i < r.length; i++){
var img=loadImage(r.id,function(_img){
$gallery.append(_img);
});
}
有了事件,你就有了更多的权力……
你可以创建和触发自己的事件,并绑定任意数量的eventandler。
使用个人事件的例子:
function loadImage(id){
var $url='url/'+id;
var img = new Image();
$(img).load(function(){
$(document).trigger('my_special_event',[this]);
}).attr({'src':$url,'id':id});
}
for(var i = 0; i < r.length; i++){
var img=loadImage(r.id);
}
$(document).bind('my_special_event',function(e,img){
$gallery.append(img);
});
如果你想要的元素:
function loadImage(id){
var $url='url/'+id;
var img = new Image();
return $(img).load(function(){
return this;
})
.attr({'src':$url,'id':id})
.get(0);
}
如果你想要jQuery对象:
function loadImage(id){
var $url='url/'+id;
var img = new Image();
return $(img).load(function(){
return this;
})
.attr({'src':$url,'id':id});
}
相关文章:
- 节点导出返回一个空对象
- ES6构造函数返回基类的实例
- 监视函数从服务返回不起作用,但作用域函数起作用
- Javascript函数img.onload不返回任何内容(真或假)
- 如何捕获 iframe 内的 img 标记返回的 404(未找到)错误
- img src 属性在为空时返回页面的 URL
- 如何在 jQuery 中的 img.onload = function() 中返回一个变量
- jQuery - img src 中的变量返回未定义
- 为什么在循环中动态将 .onclick 添加到 img 元素需要返回函数()
- a.getAttribute(“href”) 返回 img src 而不是 href
- 单击将 img 更改为新的 img 并返回原始图像
- Jquery - 单击时更改 img src,如果单击不同的 img 或块,则返回旧的 src
- 如何用javascript点击图片返回img.src
- 如何确保从服务器端返回的img不会被拦截
- 如果切换img src然后再返回,图像将被加载两次
- jQuery宽度()和高度()返回0的img元素
- 传递img元素作为返回值
- 上传图片从设备到服务器,如何返回img的最终url作为字符串
- 从JavaScript中的img.load()返回img
- 如何让JQuery返回有效的img src