2012-01-27 2 views
0

Я сомневаюсь в функции «вызова» в Javascript. У меня есть этот JQuery плагин:Функция обратного вызова для плагина jQuery

(function($) { 
    var methods = { 
     method1 : function(settings, callback) { 
      // do stuff 
       if($.isFunction(callback)){ 
        callback.call(this, $(list)); 
       } 
     }, 

     method2 : function(settings, callback) { 
      // do stuff 
       if($.isFunction(callback)){ 
        callback.call(this, $(list)); 
       } 
     }, 

     method3 : function(settings, callback) { 
      // do stuff 
       if($.isFunction(callback)){ 
        callback.call(this, $(list)); 
       } 
     }, 


}; 

$.fn.jPlugin = function(method) { 
    if (methods[method]) { 
     return methods[method].apply(this, Array.prototype.slice.call(arguments, 1)); 
    } 

    else if (typeof method === 'object') { 
     $.error('Expected two (2) parameters: parameter 1 must be the method name to call. Parameter 2 must be an object containing the settings for this method.'); 
    } 

    else { 
     $.error('Method ' + method + ' does not exist'); 
    } 
}; 

И я немного запутался об этой линии в плагине документации JQuery:

return methods[method].apply(this, Array.prototype.slice.call(arguments, 1)); 

Плагин работает как и ожидалось, идентификатор не передается обратного вызова. Но как мне сделать, чтобы передать обратный вызов правильному методу, если я вызову такой плагин?

$('#my-div').jPlugin('method1', settings); 

Должна ли функция обратного вызова быть частью объекта настроек или я могу адаптировать плагин для принятия этого?

$('#my-div').jPlugin('method1', settings, callback); 

Спасибо, ребята!

+0

'$ ('# мой-ДИВ') jPlugin ('method1', настройки, обратный вызов);. 'Будет работать с текущим кодом плагина. С чем конкретно вы сталкиваетесь? –

+0

Я просто не понимаю, как это сделать. Я думал, что (аргументы, 1) ссылаются на второй аргумент $ ('# my-div'). JPlugin ('method1', settings); ... поэтому «настройки». Я не знал, должен ли я добавить обратный вызов где-то в другом месте. – luso

+0

Я думаю, что «аргументы» сами относятся ко всем аргументам вызова, поэтому настройки и обратный вызов, вот и все? – luso

ответ

0

Ответ в @Felix Клинг комментарии

Смежные вопросы