我有这个主要功能,它需要1个字符串和2个回调函数作为参数。下面是代码。
function confirmYesNo(confirmMessage, confirmCallback, cancelCallback) {
$("#yes-button").click(function () {
confirmCallback(); //How do I pass confirmCallback arguments
});
...
}
这是调用函数的方式
function confirmYesNoTest() {
var confirmContent = "Some Message"
var id = "1";
confirmYesNo(confirmContent,
function (id) { alert(id); }, //alerts undefined
function () { alert("Cancel Clicked"); });
}
问题是,执行confirmCallback时,上面的id变量(设置为1)显示为“ undefined”。似乎与范围有关,但是我无法正常工作。
回调不应包含任何参数。您可以在闭包中捕获ID:
function confirmYesNoTest() {
var confirmContent = "Some Message"
var id = "1";
confirmYesNo(
confirmContent,
function () { alert(id); },
function () { alert("Cancel Clicked"); }
);
}
另外,如果您不想使用闭包,则可以将id作为参数传递给回调:
function confirmYesNo(confirmMessage, id, confirmCallback, cancelCallback) {
$("#yes-button").click(function () {
confirmCallback(id);
});
...
}
并在调用时:
function confirmYesNoTest() {
var confirmContent = "Some Message"
var id = "1";
confirmYesNo(
confirmContent,
id,
function (id) { alert(id); },
function () { alert("Cancel Clicked"); }
);
}
现在,您可以将回调用作命名函数:
var confirmCallback = function(id) {
alert(id);
};
接着:
function confirmYesNoTest() {
var confirmContent = "Some Message"
var id = "1";
confirmYesNo(
confirmContent,
id,
confirmCallback,
function () { alert("Cancel Clicked"); }
);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句