2016-11-24 84 views
2

我有一個預加載器,它在jQuery v3.1.1中停止工作。jQuery v3.1.1 - 窗口加載

$(window).load(function() { 
    $(".loader").fadeOut("slow"); 
}); 

我將它改爲下面的代碼,但它不能正常工作。裝載機不會隱藏。只有在刷新頁面後,纔開始工作。

$(window).on("load", function() { 
    $(".loader").fadeOut("slow"); 
}); 
+2

(https://jsfiddle.net/7juqbocd/)請更新與[MCVE]證明了問題的問題。 –

+0

我測試過一個頁面上的代碼,它工作正常。請提供更多代碼來查找問題。 –

+2

請務必在任何其他事件中包裝它,例如文件準備就緒。查看更多信息:https://github.com/jquery/jquery/issues/3194 –

回答

1

您更改的代碼似乎是正確的。 我不認爲這是因爲你對jQuery 3.1.1的更新。

但可能是因爲您的網站上的其他腳本存在錯誤,導致該腳本不再被觸發。你的網站有任何javascript錯誤嗎?

也許嘗試在jQuery實現後直接更改「load」函數的位置。

+0

問題是因爲OP是嵌套事件。在評論中看到,他正在從文檔準備好的jq僞事件中限制加載事件。但問題是缺少這個重要的信息 –

1

在jQuery 3.x中刪除了jQuery加載事件。見http://api.jquery.com/load-event/

你可以這樣做,而不是:[爲我工作]

window.onload = function() { 
    $(".loader").fadeOut("slow"); 
} 
+1

OP已經在jQuery上使用相關的替代方法:'$(window).on(「load」,handler);'。順便說一句,使用'window.onload'屬性來設置處理程序是不好的,因爲使用這種方式,你只能綁定一個事件。使用'addEventListener()'DOM方法會更合適 –

+0

@ A.Wolff你當然是對的......但是,他似乎並不知道jQuery 3.x中沒有更多的加載事件。 – Flyer53

+0

我認爲他知道這一點,因爲他發佈替代問題本身:)否則,這仍然是一個很好的信息 –