2012-01-27 12 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)); 

プラグインには、コールバックが渡されないと予想IDとして機能します。しかし、このようなプラグインをコールすれば、コールバックを正しいメソッドに渡すにはどうしたらよいですか?

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

コールバック関数を設定オブジェクトの一部にする必要がありますか、またはこれを受け入れるようにプラグインを調整する必要がありますか?

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

ありがとう! @Felixクリングで

+0

'$( '#私の-のdiv')コメントjPlugin( 'method1を'、設定、コールバック);'現在のプラグインコードで動作します。どのような問題がありますか? –

+0

私はちょうど完全に "呼び出し"の部分を理解していない。私は(引数、1)が$( '#my-div')の2番目の引数を参照していると思った。jPlugin( 'method1'、settings);、... so "settings"。コールバックを別の場所に追加する必要があるかどうかはわかりませんでした。 – luso

+0

私は、 "引数"自体が呼び出しのすべての引数を参照していると思いますので、設定とコールバック、それはそれですか? – luso

答えて

関連する問題