将变量传递给回调函数

时间:2010-05-24 06:28:09

标签: javascript jquery jquery-plugins

我正在尝试编写一个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调用,所以它会开始变得混乱。有没有办法做到这一点?

2 个答案:

答案 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