【问题标题】:How to completely stop the jQuery UI dialog from opening if the tab is shifted?如果选项卡移动,如何完全阻止 jQuery UI 对话框打开?
【发布时间】:2010-09-06 17:48:03
【问题描述】:

我想在 jQuery UI 选项卡中打开一个 jQuery UI 对话框(其内容通过 ajax 加载)。

场景:

我在页面中有两个标签。如果我在一个选项卡中单击覆盖链接(用于模式对话框),并且在加载对话框期间(尚不可见 - 正在发生 ajax 调用),我单击另一个选项卡,我希望该选项卡shift,并从选项卡 1 中删除覆盖。目前,它正在加载到选项卡 2。

如何停止标签 1 中的旧对话框显示在标签 2 中?

dialog("close") & dialog("destroy") 不能解决问题。

感谢您的快速响应。

提前致谢。

【问题讨论】:

    标签: jquery jquery-ui modal-dialog


    【解决方案1】:

    所以在 ajax 调用完成之前不会显示您的对话框?对吗?

    如果是这样,您可以在您的 ajax 调用的 oncompleted 函数中检查选项卡 1 仍处于选中状态。如果不是,则不显示对话框。

    $.get("example.com/foo", null, function (data, status) {
    
        if ($(".tab1.ui-selected").length == 1) {
            // open the dialog
        } else {
            // do nothing.
        }
    
    
    } );
    

    【讨论】:

    • 如果没有充分的理由让 ajax 调用出现在对话框的打开事件中,我会考虑按上述方式移动它。上面的示例也可以扩展为处理 AJAX 调用失败的情况 - 例如您不会显示损坏的对话框,而是显示错误消息。
    • 对不起,我已经删除了上面的评论。实际上 ajax 调用是通过对话框内置功能。(使用选项“源”)
    • @stackoverflow >>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多