看看以下代码:
this.dialog({
width: 500,
height: 260,
title: "Setup database",
content: $("<form>").append(table),
buttons: {
submit: function(_alert, dialog) {
dialog.find("form").each(function() {
var arr = $(this).serializeArray();
var data = {
mysql: true
};
var empty = false;
$(this).find("input").removeClass("error");
for (var k in arr) {
if ($.trim(arr[k].value) !== "") {
data[arr[k].name] = arr[k].value;
} else {
empty = true;
$(this).find("input[name='" + arr[k].name + "']").each(function() {
$(this).addClass("error");
});
break;
}
}
if (!empty) {
self.ajax({
url: url,
data: data
}, function(result) {
callback(result);
}, function() {
self.mysql(url, callback, _db_name, _db_user, _db_pass, is_dialog);
});
}
_alert.remove();
if($.isFunction(callback_submit)) {
callback_submit();
}
});
}
}
});
有两个参数传递给匿名函数,当单击“提交”按钮时,该参数应该触发。但我不知道这些参数应该来自哪里。谁能解释一下?这是否与在Javascript中将参数传递给匿名函数有关?
答案 0 :(得分:0)
在jquery-ui对话框中触发按钮事件回调时,我认为你没有传递任何参数
http://jsfiddle.net/3d7QC/1577/
buttons: {
"I've read and understand this": function() {
console.log(arguments);
// look at your console
$(this).dialog("close");
}
只有你传递给你的参数才是习惯的jQuery事件对象。
答案 1 :(得分:0)
第一个参数_alert
是传递给JavaScript中每个事件处理程序的JS事件对象。这不是jQuery特有的。 javascript.info explains this as follows:
W3C方式
遵循W3C标准的浏览器始终将事件对象传递为 处理程序的第一个参数。
例如:
element.onclick = function(event) { // process data from event }
在jQueryUI API reference他们确认我
指定应在对话框中显示哪些按钮。上下文 回调是对话框元素;如果你需要访问 按钮,它可用作事件对象的目标。
我illustrated this in a fiddle。但不确定第二个参数(在您的情况下为dialog
)是做什么的。它没有在我的示例代码中传递。
答案 2 :(得分:0)
单击时,应该只传递一个参数提交,这是按钮本身的事件对象。因此,上下文集是提交按钮,如果需要访问对话框并进行修改,可以通过访问event.target属性来实现。
this.dialog({
buttons: {
submit: function(event) {
$(event).dialog('close'); //is the same as...
$(this).dialog('close');
}
});