如何使用回调编写jQuery函数?
我有以下功能:如何使用回调编写jQuery函数?
function loadProjects(pID) {
$.ajax({
url: myURL,
success: function (dataJS) {XXXXXXXXXXXXXXXX}
});
}
我调用此函数,像这样loadProjects(1);
问题是我希望能够在成功后定义一个callBack函数,并且我希望在loadProjects(1,callback:{包括这里包含的js在成功之后被回调回来)时包含它。)
如何让函数接受回调? 如何将回调传递给该函数?
谢谢
function loadProjects(pID, callbackFunction)
{
$.ajax({
url: myURL,
success: function (dataJS)
{
if(typeof callbackFunction == 'function')
{
callbackFunction.call(this, dataJS);
}
}
});
}
用法:
loadProjects(pID, function(dataJS)
{
// do stuff with your dataJS, bear in mind you can call the parameter any name.
});
+1正确猜测他想将参数传递给回调 – mVChr 2011-04-27 00:26:24
@mVChr我读到时笑了起来。 – jessegavin 2011-04-27 00:31:03
这个问题值得一个-1为差的措辞。 – mattsven 2011-04-27 00:33:09
下面是如何修改您的功能,以便它可以接受回调。
function loadProjects(pID, callback) {
$.ajax({
url: myURL,
success: function (dataJS) {
if ($.isFunction(callback)) {
callback.call();
}
}
});
}
下面介绍如何使用它。
function myCoolCallback() {
alert("I am cool");
}
loadProjects(123, myCoolCallback);
或者你可以像这样使用匿名函数。
loadProjects(123, function() {
alert("I am cool");
});
function loadProjects(pID, callback) {
$.ajax({
url: myURL,
success: function (dataJS) { if (callback) { callback(); } }
});
}
调用是这样的:
loadProjects(111, function() { alert('hello!'); });
但我怎样才能传递参数回调? – AnApprentice 2011-04-27 00:19:28
function loadProjects(pID, callback) {
$.ajax({
url: myURL,
success: function (dataJS) {
// your initial method declaration goes here
...
// just call the callback method at the end of the success method
callback();
}
试试这个:
var loadProjects = function(pID, callback) {
var obj = { url: myURL };
if(typeof callback != "function"){
obj.success = function(dataJS){
loadProjects(1, /* Your callback func here */);
};
} else {
obj.success = callback;
}
$.ajax(obj);
};
loadProjects(1, /* Your callback func here */);
您可以将函数传递给另一个函数,就好像它是任何其他对象一样。检查了这一点:
function loadProjects(pId, callback) {
$.ajax({
url: myUrl,
success: function() {
callback.call(); // <-- invokes your callback with no args
}
}
大家都谢谢。但我希望回调是我想要的任何东西。我不希望回调是静态的? – AnApprentice 2011-04-27 00:16:28
查看我的回答...? – mattsven 2011-04-27 00:17:23
再次感谢,但所有这些都是静态回调,它不允许我定义像callbackfunc(22) – AnApprentice 2011-04-27 00:23:06