我有一个功能来创建一个新对象“对话框”,然后执行一个 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();
}
}