Функция обратного вызова для плагина jQuery - PullRequest
0 голосов
/ 27 января 2012

Я сомневаюсь в функции "вызова" в Javascript.У меня есть этот плагин 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);

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

1 Ответ

0 голосов
/ 08 октября 2012

Ответ в комментариях @Felix Kling

...