0

我尝试了我在这里找到的所有解决方案,但没有一个对我有用..

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 个解决方案!也许我没有把它们做好......无论如何,它们没有工作。

我应该怎么办 ?肿瘤坏死因子。

4

1 回答 1

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。

于 2013-06-27T14:46:21.860 回答