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"));

就在对话框初始化返回“对话框”之前。

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 回答