如何取消打开jQuery UI对话框?

我有以下内容:

container.dialog().bind('dialogopen', function(event, ui) { ... if (someCondition) { $(this).dialog('close'); // the dialog is not closed! } } 

我该怎么做才能运作?

不幸的是,没有’beforeopen’事件被吸引。

这里的问题是你需要在事件发生之前绑定它。 目前你正在调用.dialog()打开对话框(除非autoOpen: false是一个提供的选项)。 这意味着在.bind(....)运行之前,事件已经发生。 解决方案是在事件发生之前绑定,如下所示:

 container.bind('dialogopen', function(event, ui) { if (someCondition) { $(this).dialog('close'); // the dialog is not closed! } }).dialog(); //.dialog() fires "dialogopen" as part of it's execution 

您可以在此处查看演示 ,它将阻止对话框打开,或者它确实打开,但在UI线程更新之前立即关闭,因此对用户来说,它永远不会打开。

这是因为在转换为对话框(而不是对话框容器)的元素上触发了dialogopen事件 ……稍后创建对话框本身无关紧要,这只是一个侦听事件的DOM元素。

查看autoOpen (将其设置为false )以使其隐藏,直到您确认someCondition。 然后调用.dialog("open") ……

对话框中的打开事件就像’beforeopen’。