2010-02-02 75 views
3

我正在使用$(window).load() ...並找到一個問題。 實際上按照這個函數第一個窗口應該加載,然後在這個函數下的任何實現應該開始工作。 這適用於IE,但不適用於FF。 在FF中其工作方式如$(document).ready()

有人可以提出任何替代方法,或者FF的行爲如此的原因。

回答

6

你的第二個方法是首選的方法,對於FF和IE瀏覽器的工作:

$(document).ready(function(){ /*.code.*/ }); 

或者速記形式:

$(function(){ /*.code.*/ }); 
+2

+1因爲我不知道$(function(){....}); – 2010-02-02 14:38:01

+0

多數民衆贊成在罰款,但有時你確實需要$(窗口).load() – Wondering 2010-02-02 14:38:22

+0

@Wondering - 我很好奇,什麼是load()over ready()的用例? (不說沒有,我真的很好奇) – Matt 2010-02-02 14:41:25

4

爲了增加Jonathans答案,jQuery的自己的文檔有關$(document).ready:

「雖然JavaScript提供頁面呈現時執行代碼的加載事件,但是此事件不會觸發直到所有資產如圖像已完全收到 。在大多數情況下,只要完整構建DOM層次結構,腳本就可以運行。傳遞給.ready()的處理程序保證在DOM準備就緒後執行,所以這通常是附加所有其他事件處理程序的最佳位置,並且 運行其他jQuery代碼。當使用依賴於CSS樣式 屬性值的腳本,它引用腳本之前引用外部樣式或嵌入樣式元素 是非常重要的「

來源:http://api.jquery.com/ready/

編輯:

根據您的評論,這聽起來像你依賴另一個JavaScript執行之前,你希望你的腳本執行搶值。我可以想到兩個選項在這裏:

1)如果其他腳本是在你的控制,然後讓它在你的load()函數中調用你想要的代碼。 2)如果這個其他代碼不在你的控制範圍內,那麼你最好的辦法就是「觀察」感興趣的領域,以便知道什麼時候改變,以便知道何時調用你自己的腳本。我不相信jQuery內置此功能(對於非表單字段),但有插件(如http://plugins.jquery.com/taxonomy/term/1939)。

+0

thnx馬特爲你所有的幫助..將盡力.. – Wondering 2010-02-02 17:31:33

相關問題