刚刚从1.8.5更新了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 lib),还有CSS(使用Smoothness主题),使用Firebug进行检查。
Firebug控制台中没有错误或警告。
我对下载的发行版进行的唯一更改是通过删除版本号和“ui”重命名某些文件,即 jquery-ui-xyz.js 变为 jqueryui.js 。正如我所说,脚本加载正常。
我在这里看到了关于同一问题的几个问题,但没有真正的答案。在回滚或开始更改我以前工作的代码之前,如果我在这里遗漏了某些内容,请告诉我。
非常感谢。
答案 0 :(得分:2)
解决。其中一个愚蠢的案例,其中明显的问题只是一个红色的鲱鱼,真正的问题在于其他地方。
我所做的是,在我的MVC框架中修改了单个变量 ,这导致jQuery UI脚本和其他基本脚本加载到head
部分,而不是body
部分。我在升级jQuery之前做了这个,并没有测试效果,假设什么都不会改变:什么,我只是移动脚本,如果出现问题我会收到错误,我会抓住它。
事情是,其中一个脚本包含上面的代码。它现在加载到head
。我必须假设在文档的head
部分中通过JS创建 div 元素是行不通的,是吗?这是一个无声的失败,没有发出错误!
然后我升级了jQuery ,并得到了上述问题。由于缺少任何错误报告,我得到了进一步的误导,并且通常的罪魁祸首(没有正确加载脚本和CSS)不应该归咎于此。
我把头发拉了出来,直到今晚拿到它并解决了。我应该得到的是,不要对项目进行增量更改,在每个步骤进行测试,尤其是在这样一个重要的子框架大修之前。
所以,向jQuery团队道歉。我的坏。
TL; DR:这不是jQuery的错。一直以来都是糟糕的开发实践。另外,请确保不要在页面的head
部分创建jQuery UI Dialog对象(无论听起来多么愚蠢)。