2011-10-28 147 views
1

剛從1.8.5更新到1.8.16的jQuery UI,以及我在應用中成功使用的模式對話框突然停止顯示,我的意思是疊加顯示正確,但實際的框完全不顯示。jQuery UI 1.8.16對話框不再顯示

對話框創建和使用是直截了當:

var dlg=$('<div></div>').dialog({modal:true,autoOpen:false}); 
dlg.html('some content'); 
dlg.dialog('open'); 

過去,這很好地工作。現在我只是得到覆蓋,沒有實際的對話框。

所需的JS加載正常(單個jQuery UI文件,包含所有依賴項,加上jQuery庫),也是使用Firebug檢查的CSS(使用Smoothness主題)。

Firebug控制檯中沒有錯誤或警告。

我要下載的分佈做出的唯一改變是通過除去版本號和「UI」,重命名某些文件,即的jQuery-UI-xyz.js成爲jqueryui.js。正如我所說,腳本加載正常。

我在這裏看到了幾個關於同一問題的問題,但沒有真正的答案。在回滾或開始更改我以前的工作代碼之前,請告訴我是否在此處丟失了某些東西。

非常感謝。

+0

您是否升級了CSS(類可能已更改) - 並在瀏覽器緩存中驗證它?你提到它加載 - 但通常你的CSS會被緩存。 – SliverNinja

+0

@SliverNinja:是的,CSS文件是正確的版本,在禁用緩存的情況下進行測試,並在FF中使用Shift + Ctrl + R進行測試。不工作:( – webmaster

回答

2

已解決。其中一個愚蠢的案件,其中明顯的問題只是一個紅鯡魚,真正的問題在於別的地方。

我做什麼,在我的MVC框架,這引起了jQuery UI的腳本和其他必要的腳本在head節就可以加載改變單個變量,而不是body部分。在升級jQuery之前,我做了這個,,並沒有測試效果,假設沒有什麼會改變:什麼,我只是移動腳本,如果出現錯誤,我會得到一個錯誤,然後我會抓住它。

事情是,其中一個腳本包含上述代碼。它現在加載在head。我不得不假設在文檔的head部分中通過JS創建一個div元素是不行的,是嗎?這是一個沉默的失敗,沒有錯誤發出!

我然後升級jQuery,並得到了上述問題。由於缺乏任何錯誤報告,我進一步誤導了這一點,並且通常的罪魁禍首(沒有正確加載腳本和CSS)不應該歸咎於此處。

因爲我把我的頭髮拉出來,直到今晚解決了它。我值得這樣做,因爲不對項目進行漸進式更改,在每個步驟進行測試,在這樣一個重大的子幀檢修之前。

所以,向jQuery團隊道歉。我的錯。

TL; DR:這不是jQuery的錯。一直以來,這是不好的開發實踐。此外,請確保您不要在頁面的head部分創建jQuery UI對話框對象(但聽起來很愚蠢)。