升级jQuery UI至1.13.2后Dialog的modal属性异常求助
移除过时的遮罩层width兼容代码
你代码里open事件中手动设置$('.ui-widget-overlay').css('width', '100%');是针对旧版本IE的临时修复,在1.13.2版本中已无需保留——新版本的.ui-widget-overlay原生就配置了全屏覆盖的样式(position: fixed; top: 0; left: 0; width: 100%; height: 100%;),手动修改width反而会破坏布局,导致遮罩层无法完整覆盖页面。修改后的
open事件代码:open: function (event, ui) { $('body').css('overflow', 'hidden'); // 移除$('.ui-widget-overlay').css('width', '100%');这一行 },强制Dialog挂载到body节点下
若#contact-dialog原本嵌套在带有position: relative或overflow: hidden的容器内,可能导致遮罩层的作用范围受限。显式设置appendTo选项为'body',确保对话框和遮罩层都直接挂载到body下:$("#contact-dialog").dialog({ title: 'Contact', resizable: false, position: { at: "center" }, width: 800, height: 310, open: function (event, ui) { $('body').css('overflow', 'hidden'); }, close: function (event, ui) { $('body').css('overflow', 'auto'); }, appendTo: 'body', modal: true });检查页面元素的z-index层级
jQuery UI默认给遮罩层设置的z-index是1001,对话框是1002。如果页面中存在z-index高于1001的元素,这些元素会穿透遮罩层被选中。可以通过浏览器开发者工具排查这类元素,要么调整它们的z-index到1001以下,要么手动提升遮罩层的层级:.ui-widget-overlay { z-index: 9999 !important; /* 确保该值低于对话框的z-index */ }验证jQuery UI CSS的完整性
确认引入的CSS是1.13.2版本的完整文件,通过开发者工具检查.ui-widget-overlay的样式是否包含以下关键属性:.ui-widget-overlay { position: fixed; top: 0; left: 0; width: 100%; height: 100%; opacity: 0.3; }若这些属性未生效,说明CSS文件路径错误或未正确加载,重新引入官方版本的CSS即可。
内容的提问来源于stack exchange,提问作者magi

