我有一个带有我正在显示的对话框的网页jQuery.dialog
(jQuery 1.7.1,jQuery-UI 1.8.18)。我这样创建它:
$(theDialog).dialog({
autoOpen: false,
width: "800px",
modal: true, // etc....
});
在同一页面上,我有一个列表控件,它是由一堆<div>
元素构成的。因此,我会听到对堆叠<div>
元素的点击:
$("#listEmployees div").on("click", "input", listEmployees_ItemClicked);
listEmployes_ItemChecked
我的事件处理程序在哪里。当我显示 jQuery 对话框时,HTML 页面上的大部分元素都被禁用;即他们对鼠标点击和c没有反应。但是,我的列表堆栈不是:如果我单击其中的项目,则会调用事件处理程序。
为了解决这个问题,我必须在页面上引入一个全局变量,isDialogVisible
我的对话框在打开时设置它并在关闭时清除。如果全局变量为真,则事件处理程序将忽略该事件。不用说,这是一个 hack,不会很好地扩展。
我的期望是dialog
,作为模态的 jQuery 会在打开时禁用这些元素中的所有 HTML 元素和事件。这种期望不正确吗?为什么当模态对话框启动时我仍然看到鼠标点击?