如何用回调编写jQuery函数?
我有以下function:
function loadProjects(pID) { $.ajax({ url: myURL, success: function (dataJS) {XXXXXXXXXXXXXXXX} }); }
我把这个函数称为loadProjects(1);
问题是我希望能够在成功之后定义一个callBack函数,并且我想在我执行loadProjects时包含它(1,回调:{此处包含的任何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. });
以下是如何修改函数以便它可以接受回调。
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!'); });
您可以将函数传递给另一个函数,就像它是任何其他对象一样。 看一下这个:
function loadProjects(pId, callback) { $.ajax({ url: myUrl, success: function() { callback.call(); // <-- invokes your callback with no args } }
您还可以阅读MDC文档(function.call()) 。
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 */);