我正在使用 jquery-ui 对话框(非模态对话框)。如果用户在对话框外单击,我想关闭对话框。出于这个原因,我使用了Jquery 外部事件插件。我还创建了一个小提琴:
http://jsbin.com/apezok/3/edit
在这个小提琴中,我创建了一个按钮,我们可以通过它打开一个对话框。我clickoutside
也将事件与对话框绑定。现在我的问题是当我单击按钮打开对话框时,单击外部事件执行并关闭对话框。如何在打开对话框时停止执行此事件?
我正在使用 jquery-ui 对话框(非模态对话框)。如果用户在对话框外单击,我想关闭对话框。出于这个原因,我使用了Jquery 外部事件插件。我还创建了一个小提琴:
http://jsbin.com/apezok/3/edit
在这个小提琴中,我创建了一个按钮,我们可以通过它打开一个对话框。我clickoutside
也将事件与对话框绑定。现在我的问题是当我单击按钮打开对话框时,单击外部事件执行并关闭对话框。如何在打开对话框时停止执行此事件?
单击按钮元素首先会触发该元素的单击事件,然后单击事件会向上传播到 DOM 中的更高级别。event.stopPropagation()
防止事件传播到更高级别:
$("#opendialog").click(function(event){
event.stopPropagation();
$(".dialog").dialog("open");
});
如果用户在对话框已经打开时单击打开按钮怎么办?这仍然应该算作在对话框外单击并关闭它吗?如果这是所需的行为,则以下工作:
$("#opendialog").click(function(event){
if (!$(".dialog").dialog("isOpen")) {
event.stopPropagation();
$(".dialog").dialog("open");
}
});