2011-12-23 102 views
-3

我得到了一個代碼,可以用來通知用戶,當所有圖像下載完成,但代碼的流程不是很清楚。任何人都可以詳細解釋。需要說明的jQuery代碼

什麼人()函數和它做什麼... load()函數是如何調用

這裏是代碼

$("#loadingDiv").show(); 
var nImages = $("#all-images").length; 
var loadCounter = 0; 

$("#all-images img").one("load", function() { 
loadCounter++; 
if(nImages == loadCounter) { 
    $(this).parent().show(); 
    $("#loadingDiv").hide(); 
} 
}).each(function() { 

// attempt to defeat cases where load event does not fire 
// on cached images 
if(this.complete) $(this).trigger("load"); 
}); 

感謝

+1

爲什麼不在[jQuery文檔](http://api.jquery.com/one/)中查找它? – 2011-12-23 09:10:23

回答

0

。一(事件處理程序)設置要在給定事件上最多執行一次的代碼塊。這意味着,如果你有類似$("#someid").one(click, function(){blabla; more_blabla;});的東西,它只會在你第一次點擊someid元素時觸發。

Reference

編輯:這個問題有排序的代碼的解釋。 jQuery loading images with complete callback

基本上,您正在加載頁面中的一個或多個圖像對象。 $("#all-images img").one ...將一個事件處理程序(事件發生時運行的代碼塊)綁定到所有正在加載的圖像上......代碼將爲其中的每個圖像執行一次和一次。

後來,有this只是點(港燈)的對象被加載只運行在所有選擇的"#all-images img"元素。每次和..指針(圖像),並完成屬性告訴如果加載是完成與否。因此,最後一段代碼會查找已加載的圖像,以便將它們的aaaalll事件處理程序綁定到它們上(因爲初始綁定僅考慮從服務器加載的圖像,我猜)。

Hope我很清楚

+0

我需要了解代碼。如果可能的話請解釋。我只是不明白,如果(this.complete);這條線。這指的是哪個元素。什麼完成?它試圖檢測什麼是完整的? – 2011-12-23 10:21:45

+0

我只需要了解這段代碼是如何逐行執行的。 – 2011-12-23 10:23:40