1

ボタンが他の場所でクリックされたときに、このダイアログを生成して表示します。

this私の新しいボタンでは、作成中のダイアログを参照していないようです。

なぜだめですか?

d = document.createElement('div');
$(d).attr("id", "dialog")
    .load('/my/php/file.php')
    .addClass('dialog_frame')
    .appendTo('body')
    .hide();

$(d).dialog({
    autoOpen: true,
    modal: true,
    buttons: 
    [
        {
            "text": "Save",
            "click": 
                function() {
                    $(this).dialog("close");
                }
        },
        {
            "text": "Cancel",
            "click":
                function() {
                    $(this).dialog("close");
                }
        }
    ],
    close: function() {

    }
});

アップデート

alert($(d).attr("id"));

ダイアログの初期化が「dialog」を返す直前。

alert($(this).attr("id"));

「保存」クリック機能内で、「ダイアログ」が表示されます。これは私が期待するものです。

4

1 に答える 1

1

あなたの問題は、ダイアログの一部を上書きする ajax リクエストです。
ajax コールバックの横にダイアログを表示します。

d = document.createElement('div');
$(d).attr("id", "dialog")
    .load('/my/php/file.php', function(){
        $(d).dialog({
            autoOpen: true,
            modal: true,
            buttons: 
            [
                {
                    "text": "Save",
                    "click": 
                        function() {
                            $(this).dialog("close");
                        }
                },
                {
                    "text": "Cancel",
                    "click":
                        function() {
                            $(this).dialog("close");
                        }
                }
            ],
            close: function() {

            }
        });
    })
    .addClass('dialog_frame')
    .appendTo('body')
    .hide();
于 2013-09-08T18:24:33.013 に答える