同步使用jQuery加載函數的最佳方法是什麼?jQuery .load(函數)同步
我需要加載圖像,但不能執行下一行代碼,直到該圖像已加載。
我可以循環一個變量,直到加載完成,但想知道是否有更好的方法來做到這一點。
var img = jQuery('<img src="' + url + '"/>').load(function() {
});
//Run code here once img load has comlpeted.
同步使用jQuery加載函數的最佳方法是什麼?jQuery .load(函數)同步
我需要加載圖像,但不能執行下一行代碼,直到該圖像已加載。
我可以循環一個變量,直到加載完成,但想知道是否有更好的方法來做到這一點。
var img = jQuery('<img src="' + url + '"/>').load(function() {
});
//Run code here once img load has comlpeted.
據我所知,在load
事件總是會觸發異步,但如果圖像(在一些瀏覽器)已經被緩存。唯一可靠的解決方案是像你一樣把代碼放在回調中。但是,爲確保load
處理程序將始終在所有瀏覽器中被觸發,即使圖像被緩存,請確保在之前添加處理程序,設置圖像的src
屬性。
var img = jQuery('<img src="' + url + '"/>').load(runner);
function runner() {
//run code here once image is loaded
}
很好的抓住plalx – zarazan
您還可以使用回調函數來獲得同步行爲 -
var result = $('#main-container').load('html/Welcomeform.html',
function() {
if($("textarea").find("#mail-id")){
$("textarea#mail-id").val(email_id);
}
});
我來到這裏尋找一個類似的解決方案。從讀取中,使用.load是不可能的,您需要使用AJAX請求,正如問題註釋所指出的那樣。
在我的情況下,我需要加載一個html文件,我添加了一個轉換來更改內容。舊內容在轉換後的新內容之前顯示,即使我在加載回調中顯示內容。
var main = $("#main");
main.load("about.html", displaySection);
function displaySection() {
main.show('blind');
}
我的解決方法是運行顯示加載的內容在超時函數內的延遲參數爲200的過渡。
var main = $("#main");
main.load("about.html", displaySection);
function displaySection() {
setTimeout(function() {
main.show('blind');
}, 200);
}
的問題可能是,如果連接是緩慢,在新頁面的時間超過200毫秒加載,但在這種情況下,我不知道該回調將在稍後推出。我不明白爲什麼在沒有超時的情況下不工作,我感覺很難看,但它解決了我的問題......以防萬一其他人沒有考慮到這種可能性。
這有你需要的東西:http://stackoverflow.com/questions/5364166/how-to-load-page-synchronously-using-jquery – tymeJV