如何为同一 jquery 对话框的不同实例调用不同的操作
How do I invoke different actions for different instances of the same jquery dialog?
我只是掌握了jquery-ui和对话框函数。 我的基本工作
原理如下:$("#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');
}
这很好,但现在我想使用相同的对话框,但指定附加到"是/否"按钮的不同操作:
$("#button2").click(function() {
OpenCustomDialog("Title 2");
});
如何根据调用对话框的 HTML 元素(按钮 1/按钮 2(更改"是/否"按钮的操作?
我最好的猜测是回调函数和/或闭包,但我无法理解它。
经典而简单的方法是创建一个新对话框,而不是重用旧对话框。由于您在问题中没有这样做,因此我假设您出于任何原因都不想这样做;因此,您可以使用 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
将使处理程序看起来更干净
相关文章:
- 如何在GoogleWeb工具包(GWT)中从JSNI调用接口(实例化)
- 在Javascript中对类的每个实例调用一个方法
- 如何用javascript调用函数,然后在滚动事件中调用该函数的特定实例
- 从实例方法调用实例方法
- 概念验证模型控制器调用正确的实例
- 调用函数和创建函数实例之间的Javascript差异
- 向模板实例变量传递调用方法调用的结果时出现异常
- 如何理解“当类实例化时,JavaScript静态方法也是不可调用的”
- 如果多次调用同一函数,如何停止该函数的先前实例
- 我应该在原型上还是在新创建的实例上调用构造函数方法
- 调用Class.prototype=new MyClass()是否确保每次都重新实例化超类
- 调用Javascript中实例的函数
- angular.injector在每次调用时返回新的服务实例
- 调用的每个实例的唯一随机数
- 如何使对象可以作为实例和函数调用
- 如何为同一 jquery 对话框的不同实例调用不同的操作
- 如何为对象的所有实例调用Objects函数
- 从对象实例调用函数不起作用
- 在JavaScript中使用Array对象对数组内部的实例调用任意方法
- 如何在不指定模型名称的情况下从该模型的实例调用静态Backbone.Model函数