Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 显示jQuery对话框时是否应禁用所有基础元素?_Javascript_Jquery_Html - Fatal编程技术网

Javascript 显示jQuery对话框时是否应禁用所有基础元素?

Javascript 显示jQuery对话框时是否应禁用所有基础元素?,javascript,jquery,html,Javascript,Jquery,Html,我有一个带有对话框的网页,我用jQuery.dialog(jQuery 1.7.1,jQuery UI 1.8.18)显示该对话框。我是这样创建的: $(theDialog).dialog({ autoOpen: false, width: "800px", modal: true, // etc.... }); 在同一页上,我有一个列表控件,它是由元素的堆栈构造而成的。我听到堆叠的元素上的点击声,因此: $("#listEmployees div").on("clic

我有一个带有对话框的网页,我用
jQuery.dialog
(jQuery 1.7.1,jQuery UI 1.8.18)显示该对话框。我是这样创建的:

$(theDialog).dialog({
    autoOpen: false,
    width: "800px",
    modal: true, // etc....
});
在同一页上,我有一个列表控件,它是由
元素的堆栈构造而成的。我听到堆叠的
元素上的点击声,因此:

$("#listEmployees div").on("click", "input", listEmployees_ItemClicked);
其中
listEmployes\u ItemChecked
是我的事件处理程序。当我显示jQuery对话框时,HTML页面上的大多数元素都被禁用;i、 e.他们对鼠标点击没有反应&c。但是,我的列表堆栈不是这样的:如果我单击其中的项目,就会调用事件处理程序

为了解决这个问题,我必须在页面上引入一个全局变量,
isDialogVisible
,对话框打开时设置该变量,关闭时清除该变量。如果全局变量为true,则事件处理程序将忽略该事件。不用说,这是一个黑客,不会很好地扩展

我的期望是,jQuery
对话框作为模态,在打开时将禁用这些元素中的所有HTML元素和事件。这个期望是错误的吗?为什么在模式对话框打开时仍能看到鼠标点击?

jQuery UI对话框(1.10之前的版本)具有
zIndex
属性。将
zIndex
设置为高于CSS中使用的任何
z-index
的值

例如

此功能已从中删除:

删除了zIndex选项

与stack选项类似,zIndex选项对于 正确的堆叠实现。z索引是在CSS和 堆叠现在通过确保焦点对话框是最后一个来控制 在其父元素中“堆叠”元素


jQuery UI对话框确实有方法
moveToTop()
,但这只会将对话框移动到对话框上下文的顶部,因此它高于页面上的任何其他对话框。开发人员的工作是确保他们的CSS不会导致堆叠问题不幸的是,jQuery UI并不是一直握着我们的手。

这通常是一个z索引问题。该对话框在页面上方创建一个覆盖,以防止用户与其交互。如果您能够与页面上的列表交互,则其z索引必须高于覆盖/对话框。看看这里,从语义上讲,如果它是一个模式窗口,那么当它打开时,页面上的其他控件都不应该响应。所以,是的,你应该期望没有什么是可访问的。但可能是您的模式窗口的z索引低于您仍然可以单击的列表…所以我不能期望jQuery的dialog()函数安排对话框的z索引高于所有其他元素?这似乎是模态对话框所需要的默认行为。
$(theDialog).dialog({
    autoOpen: false,
    width: "800px",
    modal: true,
    zIndex: 99
});