我尝试了我在这里找到的所有解决方案,但没有一个对我有效。
var img = $("#img");
var width, height;
$("<img/>")
.attr("src", $(img).attr("src"))
.load(function() {
width = this.width;
height = this.height;
alert(width + "*" + height) ; // works
});
alert(width + "*" + height) ; // undifined*undifined !! :(
如你所见,我需要在外面使用高度和宽度...
我重复一遍:我尝试了StackOverFlow的6-7个解决方案!也许我做得不好..。不管怎么说,它们都不起作用。
我该怎么做?Tnx。
发布于 2013-06-27 22:46:22
你可以将一个对象传递给你的匿名回调函数,并在回调函数中设置属性,这些属性将在回调函数外部被“看到”:
var img = $("#img");
var dimensions = { width: 0, height: 0 };
$("<img/>")
.attr("src", $(img).attr("src"))
.load(function(dimensions) {
dimensions.width = this.width;
dimensions.height = this.height;
alert(dimensions.width + "*" + dimensions.height);
});
// Some time later, after callback has definitely fired...
alert(dimensions.width + "*" + dimensions.height);
但正如@apsillers所说,第二个警告不会按原样工作,因为它是在匿名函数被调用之前执行的。记住,jQuery的load()
函数所做的一切就是接受一个匿名函数定义作为它的参数,并记住它以便以后使用。这完全取决于jQuery是否以及何时调用该函数。
https://stackoverflow.com/questions/17346177
复制相似问题