我尝试了我在这里找到的所有解决方案,但没有一个对我有用..
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。
答案 0 :(得分:1)
您可以将一个对象传递给您的匿名回调函数,并在回调中设置将在其外部“看到”的属性:
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。