0

我有一个功能来创建一个新对象“对话框”,然后执行一个 AJAX 请求并从中添加/删除按钮。使用以下代码,该函数作为我的主要 HTML 页面的一部分可以正常工作:

var dialog1 = new dialogBox(500, 250, "Add Note","dialog_add_note.php?job_id=" + jobdetails[1]);
dialog1.addButton("Save","Right");

我有许多(20 多个)对话框,因此希望在初始化框后更新按钮的内容。

我执行一个 AJAX 请求来更新对话框中的 HTML。以下脚本作为此请求的一部分返回:

dialog1.addButton("Save","Right");

我收到一条错误消息,指出 dialog1 现在未定义。

有没有一种方法可以让我继续使用 AJAX 请求传递的 javascript 代码更新对象?我以前在没有使用对象的情况下完成了这项工作,但它变得难以管理。

提前致谢


AJAX 请求在对象初始化时执行。见下面的功能:

function dialogBox(w, h, title, link) {

this.w=w;
this.h=h;
this.title=title;
this.link=link;

//Strip spaces from title to form ID
var id = 'dialog_' + title.replace(" ","_");

//Add dialog box div
$( "body" ).append( "<div id='" + id + "' title='" + title + "'></div>");

//Create dialog box
$( '#' + id ).dialog({
    autoOpen: true,
    height: h,
    width: w,
    modal: true,
    resizable: false,
    buttons: {
        Cancel: function() {
            $('#' + id).remove();
        }
    },
    close: function() {
        $('#' + id).remove();
    }
});

//Set buttonSet and remove all buttons
this.buttonSet = $('#' + id).parent().find('.ui-dialog-buttonset');
this.buttonSet.empty();

//Loading icon
$('#' + id).html("<div style='text-align:center;'><br><img src='../images/ajaxloader.gif' alt='Loading...'></div>");

//Set initial content of dialog box
$.get('ajax/' + link, function(data) {
        $('#' + id).html(data);
});

//Function to update content of dialog box
this.update=update;
function update(link) {
    $.get('ajax/' + link, function(data) {
            $('#' + id).html(data);
    });
}

//Clear button
this.clearButton = clearButton
function clearButton(name) {
    var tempName = name.replace(" ","_");
    $('#' + id + '_button_' + tempName).remove();
}

//Clear buttons
this.clearButtons = clearButtons
function clearButtons() {
    this.buttonSet.empty(); 
}

//Add Button
this.addButton = addButton
function addButton(name, position) {
    var tempName = name.replace(" ","_");
    newButton = $("<button id='" + tempName + "' style='float:" + position + ";'>" + name + "</button>");
    newButton.button();
    this.buttonSet.append(newButton);
}

//Close Dialog
this.close=close
function close() {
    $('#' + id).remove();
}

}

4

0 回答 0