我正在尝试编写一个jQuery插件,可以应用于选择器。在这个插件中,有多个对webservices的调用,其中需要回调方法。
我遇到的问题是在选择器的每个循环中维护当前的上下文项。
(function($){
$.fn.myMethod = function(){
return this.each(function(){
var c = $(this);
$.api.methodToCall("", CallbackFunction);
});
};
function CallbackFunction(data, result){
// do stuff based on c
}
})(jQuery);
通常,你会立即提供回调函数,这允许我访问c,但是在回调函数中,可能还有另一个api调用,所以它会开始变得混乱。有没有办法做到这一点?
答案 0 :(得分:1)
<强> EDITED 强>
正如肖恩指出的那样,我的第一版比所需要的情况复杂一点......
$.api.methodToCall("", function(data, result) {
CallbackFunction(data, result, context);
});
function CallbackFunction(data, result, c) {
// you can access 'c' here...
}
或者,如果您愿意
$.api.methodToCall("", function(data, result) {
CallbackFunction.call(c, data, result);
});
function CallbackFunction(data, result) {
// you can access 'this' here...
}
答案 1 :(得分:1)
这是最简单的方法
(function($) {
$.fn.myMethod = function() {
return this.each(function() {
var c = $(this);
$.api.methodToCall("", function() {
// do stuff based on c
});
});
};
})(jQuery);
这里我们将回调函数带入本地范围,因此它可以直接访问c
。