Я пытаюсь записать плагин 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, таким образом, это начало бы становиться грязным. Там какой-либо путь состоит в том, чтобы сделать это?
ИЗМЕНИТЬ
Как заметил Шон, мое первое издание было немного сложнее, чем требовалась ситуация ...
$.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...
}
Это самый простой подход
(function($) {
$.fn.myMethod = function() {
return this.each(function() {
var c = $(this);
$.api.methodToCall("", function() {
// do stuff based on c
});
});
};
})(jQuery);
Здесь мы переносим функцию обратного вызова в локальную область видимости, и поэтому она имеет прямой доступ к c
.