2012-09-28 133 views
39

我正在瀏覽jQuery api,並注意到load method位於不推薦使用的列表中。load()方法已棄用?

分類:過時|活動>文檔加載

我通常使用此方法檢查圖像是否完全加載。爲什麼不推薦使用?而我應該用什麼來代替?

+0

可能是因爲它與早期執行的$(document).ready'混淆了? – Blazemonger

+0

有一個原生的onload函數,工作得很好,不需要jQuery來做到這一點? – adeneo

+0

您正在將'load' [_method_](http://api.jquery.com/load/)與'load' [_event_](http://api.jquery.com/load-event/)混淆。要檢查圖像是否已加載,請使用_event_。 – Sparky

回答

57

參見bug #11733,其中記錄此棄用:

的​​方法是不明確的簽名,它可以是一個Ajax 負載或連接/觸發一個「負載」事件。 CCAO由於 不能區分它們,因爲它是基於參數的動態決策。

爲避免與方法簽名有關的含糊之處,現在建議使用on()來代替。例如:

$("selector").load(function() { 
    // ... 
}); 

應該改爲:

$("selector").on("load", function() { 
    // ... 
}); 
+0

不是,'on()'總是打算像這樣使用。它取代'bind()'以及'delegate()'和'live()'。自從引入on()以來,綁定和委託事件之間的區別(在註冊方法方面)已經消失。 –

-2

如果load沒有按預期工作,另一種是:

$(window).one("scroll", foo); 

或者

$(window).one("scroll", function(){/*...*/}); 

具體來說,滾動前夕當DOMContentLoaded不能按預期工作時,nt綁定在Android中很有用,而當IE8和以下版本時onreadystatechange不能按預期工作。

參考

+0

它沒有替代或很好的解決方法加載-_-,請參閱:http://api.jquery.com/one/ –

+0

@ Al-Mothafar滾動事件綁定至少在一些[平臺](http:// webreflection。 blogspot.com/2009/10/android-dom-finger-events.html),[場景](http://bugs.jquery.com/ticket/2614)和[瀏覽器](http://javascript.info/教程/的onload-ondomcontentloaded#即-LT-9-劈換一個文檔 - 不內部-一幀)。 –

+0

@ Al-Mothafar你爲什麼期望onload多次啓動,使.one有必要? – NoBugs

1

負載函數deprc ated在它jQuery的替代方案是上,您可以像使用

$("iframe").on("load",function() 
 
{ 
 
\t 
 
\t alert("on loaded iframe"); 
 
\t 
 
}); \t

這項工作非常適合jQuery的3.1.1。