0

初めてクリックしたときにうまく機能するモーダルウィンドウがありますが、それを閉じてリンクをクリックして再度トリガーしようとすると、コードにまったく新しいモーダルダイアログが作成されるようです.

これは問題です。現在、2つ持っているからです。これが起こらないようにする方法を見つける必要があります(そして、同じダイアログで非表示/表示を行うだけです)か、閉じるときにそれを破棄する必要があります。

私は破棄パスを試してみましたが、非常に役立つ投稿をいくつか見ましたが、コードが正しく機能していないようです。これまでの私のコードは次のとおりです。

モーダルはに関連付けられています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"...、それを機能させることができないようです。

4

1 に答える 1

2

ダイアログを破棄する方法は次のとおりです。

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

これは、既存のダイアログを開く方法です。破棄する必要はありません。

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

ダイアログ ドキュメント

その div がダイアログ内にあるかどうかを確認したい場合は、次のようなものを使用できます。

if ($('#divId').closest('.ui-dialog').length === 0) 
    // not in a dialog.
于 2013-02-22T07:32:06.200 に答える