如何取消打开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’。