2010-08-19 83 views
0

這個代碼有問題...
當這個函數被觸發時,preloader會顯示,但它永遠不會隱藏。
該頁面在其內部的圖像加載完成之前也顯示出來。jquery:我的.load()有什麼問題嗎?

我的載入功能有問題嗎?

$('select.select').change(function() { 

    var x = $(this).val(); 

    //Hide the current page and show the preloader 
    $('#page' + x).hide(); 
    $('#pageLoader *').show(); 

    //when current page is loaded, hide preloader and show page 
    $('#page' + x + ' img').load(function() { 
     $('#page' + x).show(); 
     $('#pageLoader *').hide(); 
    }); 

}); 
+0

我的下拉僅僅是一個簡單的下拉。每個選項的價值增加一個直到某個數字。不應該有問題,因爲我正在使用它來完美工作的另一部分代碼。 – cat 2010-08-19 14:55:32

回答

1

如果正在創建<img>元素的事件處理程序設置後,你將需要使用活()而不是處理器,其將結合現有的和在頁面上選擇匹配未來元素綁定:

$('#page' + x + ' img').live("load", function() { 
    $('#page' + x).show(); 
    $('#pageLoader *').hide(); 
}); 

http://api.jquery.com/live/

0

您需要提供一個URL作爲load()函數的第一個參數。

參見documentation

+3

有2種加載方法,他希望圖像的'加載'事件處理程序:) – 2010-08-19 13:53:09

+0

ar,當然:D – 2010-08-19 13:59:16

1

如果<img>已經src屬性您完成需要循環,並檢查它來自高速緩存的情況下,像這樣:

$('#page' + x + ' img').one('load', function() { 
    $('#page' + x).show(); 
    $('#pageLoader *').hide(); 
}).each(function() { 
    if(this.complete) $(this).load(); 
}); 
+0

+1這很漂亮。 'this.complete'僅用於圖像? – user113716 2010-08-19 14:08:08

+0

它似乎沒有工作同樣的事情正在發生 – cat 2010-08-19 14:13:13

+0

@patrick - 燁,當然是 – 2010-08-19 14:19:01