2011-10-28 177 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对话框对象(但听起来很愚蠢)。