我刚刚开始处理jquery和对话框函数。我已经掌握了这样的基本原理:
$("#jquery-confirm").dialog({
dialogClass: "jQdialog",
autoOpen : false,
modal: true,
buttons: {
Yes: function() {
$(this).dialog('close');
// do something for yes;
},
No : function() {
$(this).dialog('close');
// do something for no;
}
}
});然后我可以调用对话框:
$("#button1").click(function() {
OpenCustomDialog("Title 1");
});
function OpenCustomDialog(title) {
$("#jquery-confirm").dialog("option", "title", title);
$("#jquery-confirm").dialog('open');
} 这很好,但是现在我想使用相同的对话框,但是要指定附加到Yes/No按钮的不同操作:
$("#button2").click(function() {
OpenCustomDialog("Title 2");
});如何更改“是”/“否”按钮的操作,取决于调用对话框的HTML元素(按钮1/按钮2)?
我最好的猜测是回调函数和/或闭包,但我无法理解它。
发布于 2016-02-02 12:01:39
经典而简单的方法是创建一个新对话框,而不是重用旧对话框。由于您在问题中没有这样做,所以我假设您不想出于任何原因这样做;因此,您可以使用data属性:
var callbacks = {
yes: {
b1: function() { /*do something*/ }
b2: function() { /*do something*/ }
},
no: {
b1: function() { /*do something else*/ }
b2: function() { /*do something else*/ }
}
};
// ... etc.
buttons: {
Yes: function() {
$(this).dialog('close');
callbacks.yes[$(this).data("callback-target")]();
},
No : function() {
$(this).dialog('close');
callbacks.no[$(this).data("callback-target")]();
}
}
// .. etc.
$("#button1").click(function() {
OpenCustomDialog("Title 1", "b1");
});
function OpenCustomDialog(title, callback) {
$("#jquery-confirm").dialog("option", "title", title);
$("#jquery-confirm").data("callback-target", callback);
$("#jquery-confirm").dialog('open');
}还请考虑将title和callback参数绑定到OpenCustomDialog中作为按钮上的数据属性将使处理程序看起来更干净。
https://stackoverflow.com/questions/35150617
复制相似问题