Javascript 如何编写带有回调的jQuery函数,您可以将参数传递给它?
我有以下功能:Javascript 如何编写带有回调的jQuery函数,您可以将参数传递给它?,javascript,jquery,Javascript,Jquery,我有以下功能: function loadProjects(pID) { $.ajax({ url: myURL, success: function (dataJS) {###Run any supplied call back here####} }); } 我像loadProjects1一样调用这个函数 问题是我希望能够在成功后定义回调函数,并且我希望在加载projects1、pong12时包含它。我希望能够向回调提供参数 如何让函数接受
function loadProjects(pID) {
$.ajax({
url: myURL,
success: function (dataJS) {###Run any supplied call back here####}
});
}
我像loadProjects1一样调用这个函数
问题是我希望能够在成功后定义回调函数,并且我希望在加载projects1、pong12时包含它。我希望能够向回调提供参数
如何让函数接受回调?
如何将回调传递给该函数
差不多
function loadProjects(pID, callback) {
$.ajax({
url: myURL,
success: function (dataJS) {###Run any supplied call back here####}
});
}
然后我可以打电话:
loadProjects(22, pong(12))
问题是,当我尝试此操作时,pong12会立即运行,而不是稍后在loadProjects函数中调用时运行
想法?谢谢试试这个:
function loadProjects(pID, callback) {
$.ajax({
url: myURL,
success: function (dataJS) {
if ($.isFunction(callback))
callback();
}
});
}
loadProjects(1, function() { pong(12); });
或:
试着这样做:
var loadProjects = (function(pID, callback) {
var params = { "property" : "value" }
$.ajax({
url: myURL,
success: function (dataJS) { callback(params); }
});
})
loadProjects(22, function(p){ console.log(p); });
用法示例:
loadProjects(22, pong, 12);
loadProjects(22, pong, 12, 'foo', 'bar');
12、foo和bar都传递给pong回调。太棒了。非常感谢。我会接受一次所以让我。再过5分钟,$.isFunction的grrr+1比typeof foo=='function'@karim79更漂亮,后者在WebKit中也失败了。。。typeof/regex/='function':P如果不使用jQuery,我就使用callback instanceof function。@如果需要做更复杂的事情,请查看此链接:@alex-+1关于webkit的事情,我不知道。
var loadProjects = (function(pID, callback) {
var params = { "property" : "value" }
$.ajax({
url: myURL,
success: function (dataJS) { callback(params); }
});
})
loadProjects(22, function(p){ console.log(p); });
function loadProjects(pID, callback) {
var callbackArgs = arguments;
callbackArgs.shift();
callbackArgs.shift();
$.ajax({
url: myURL,
success: function (dataJS) {
// Null or this can be used depending on desired behavaiour
// See https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/function/apply
callback.apply(null, callbackArgs);
}
});
}
loadProjects(22, pong, 12);
loadProjects(22, pong, 12, 'foo', 'bar');