2

JavaScriptで次の行を取得しました:

$("#botbg").css("background-image", "url(/png/" + epage + ".jpg)");

「botbg」はdivです。この関数にコールバックをアタッチすることは可能ですか? これが完了するまで他の操作を待機させたいだけです。

これらは成功しませんでした:

$("#botbg").css("background-image", "url(/png/" + epage + ".jpg)").load(function(){
//...
});

$("#botbg").css("background-image", "url(/png/" + epage + ".jpg)").one("load", function(){
//...
});

$("#botbg").css("background-image", "url(/png/" + epage + ".jpg)").ready(function(){
//...
});
4

3 に答える 3

2

試す

var img = new Image();
img.src = url;
img.onload = function( ) {
    $("#botbg").css("background-image", "url(" + url + ")");
}
于 2012-11-17T12:08:00.857 に答える
0

いいえ、できません。

あなたができる最善のことは、temp div内に画像をロードし、ロードコールバックが次のように呼び出されたときに背景画像を設定することです:

<div id="tmp"><img src="/png/yourimage.jpg" /></div>

$("#tmp").load(function(){
    $("#botbg").css("background-image", "url(/png/yourimage.jpg)");
});

編集

.load() 関数を呼び出す新しい方法

<div id="tmp"><img src="/png/yourimage.jpg" /></div>

$("#tmp").on("load", function() {
    $("#botbg").css("background-image", "url(/png/yourimage.jpg)");
});
于 2012-11-17T12:00:41.450 に答える
0

asynchronousjQuery では、コールバック関数はタスクにのみ適用されます。関数csssynchronized関数であるため、コールバックなどはありません。そのため、.css()関数の後に配置したすべてのコード行がすぐに呼び出されます。

ただし、背景画像の負荷を追跡することはできますが、そうしても、特にブラウザーが画像に時間がかかる大きな画像では、画像が表示された後にコードが実行されるとは限りませんrender。画像が読み込まれたかどうかを追跡するには、次のようにします。

$img = $('<img src="/png/'+epage+'.jpg" id="myImg"/>');//now it will work
$img.bind('load',function(){
    $("#botbg").css("background-image", "url(/png/" + epage + ".jpg)");
});

これは機能的なfiddleです。

お役に立てば幸いです。乾杯

于 2012-11-17T12:01:05.277 に答える