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の解決策を試しました! 多分私はそれらをうまくやっていなかった... とにかく、それらはうまくいかなかった.

私は何をすべきか ?Tnx。

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 がコメントしているように、匿名関数が呼び出される前に実行されるため、2 番目のアラートはそのままでは機能しません。jQuery のload()関数が行っていることは、無名関数の定義を引数として受け取り、それを記憶しておくことだけです。その関数を呼び出すかどうか、いつ呼び出すかは、完全に jQuery 次第です。

于 2013-06-27T14:46:21.860 に答える