jQuery插件的回调函数

时间:2012-01-27 17:59:34

标签: jquery jquery-plugins callback

我怀疑"电话"在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 :(得分:0)

回答@Felix Kling评论