摧毁jquery Modal

时间:2013-02-22 07:29:27

标签: javascript jquery twitter-bootstrap asp.net-mvc-4 modal-dialog

我有一个模态窗口,第一次点击它时工作得很好,但是如果你关闭它并尝试再次点击链接来触发它,它似乎在代码中创建了一个全新的模态对话框。

这是一个问题,因为现在我有2个。我要么想办法阻止这种情况发生(并且只是在同一个对话框上进行隐藏/显示)或者在关闭时将其销毁。

我尝试了破坏路径并且我已经看到了几个非常helpful posts但我似乎无法让我的代码正常工作。到目前为止,这是我的代码:

模态与Actionlink

相关联
@Html.ActionLink("Send Email", "SendErrorEmail", "Support", new { id = Model.jcode },
            new { @class = "openDialog btn btn-inverse", data_dialog_id = "sendErrorDialog", data_dialog_title = "Send Email", @id = "senderror" })

这是我的javascript代码:

$(".openDialog").on("click", function (e) {
    e.preventDefault();

    $('#loadingdiv').show();
    $("<div></div>")
    .addClass("dialog")
    .attr("id", $(this).attr("data-dialog-id"))
    .appendTo("body")
    .dialog({
        title: $(this).attr("data-dialog-title"),
        modal: true,
        draggable: true,
        resizable: false,
        width: modalwidth,
        dialogClass: "popup1"


    })
    .load(this.href, function () {
        $('#loadingdiv').hide();
    })

});

我知道我需要添加类似on.("hidden"...的内容,但我似乎无法让它发挥作用。

1 个答案:

答案 0 :(得分:2)

这是破坏对话框的方法:

$( ".selector" ).dialog( "destroy" );

这是打开现有对话框的方式,无需销毁:

$( ".selector" ).dialog( "open" );

dialog docs

如果要检查该div是否在对话框中,可以使用以下内容:

if ($('#divId').closest('.ui-dialog').length === 0) 
    // not in a dialog.