Передача переменных в функции обратного вызова - PullRequest
1 голос
/ 24 мая 2010

Я пытаюсь написать плагин jQuery, который можно применить к селектору. В этом плагине есть несколько вызовов веб-сервисов, где требуются методы обратного вызова.

У меня проблема с поддержанием текущего элемента контекста в каждом цикле селектора.

(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 ]

1 голос
/ 24 мая 2010

Это самый простой подход

(function($) {
    $.fn.myMethod = function() {
        return this.each(function() {
            var c = $(this);
            $.api.methodToCall("", function() {
                // do stuff based on c
            });
        });
    };
})(jQuery);

Здесь мы переносим функцию обратного вызова в локальную область, и поэтому она имеет прямой доступ к c.

1 голос
/ 24 мая 2010

РЕДАКТИРОВАНИЕ

Как указал Шон, мое первое издание было немного сложнее, чем требовалось ...

$.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...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...