を学ぼうとだから私はこの例に基づいてプラグインの方法コレクションを実装する方法を学習しようとしている:私は理解できない何http://docs.jquery.com/Plugins/Authoringは、jQueryのプラグインの開発に
は、プラグインのデフォルトで拡張されたオプションを取得する方法です個々のメソッドに送信されます。
私は元のオプションは、ここでの方法にかなり確信して送信されますよ:
return methods[ method ].apply(this, Array.prototype.slice.call(arguments, 1));
それでは、どのようにデフォルトでこれらの引数を拡張することができますか?例では、実際にこれを行う方法を定義していない...
var methods = {
init : function(options) {
return this.each(function(){
$(window).bind('resize.tooltip', methods.reposition);
});
}
}
はまた、ここでのオーサリング・ページをプラグインの例からのコードは次のとおりです。
(function($){
var methods = {
init : function(options) {
return this.each(function(){
$(window).bind('resize.tooltip', methods.reposition);
});
},
destroy : function() {
return this.each(function(){
$(window).unbind('.tooltip');
})
},
reposition : function() { // ... },
show : function() { // ... },
hide : function() { // ... },
update : function(content) { // ...}
};
$.fn.tooltip = function(method) {
if (methods[method]) {
return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
} else if (typeof method === 'object' || ! method) {
return methods.init.apply(this, arguments);
} else {
$.error('Method ' + method + ' does not exist on jQuery.tooltip');
}
};
})(jQuery);
うん!間違いなく私が知りたかったことの一部。したがって、残っている唯一のことは、プラグインによってデフォルト設定で渡されたオプション(引数)を拡張する場合です。私はこれがinitメソッドの中から起こらないことを期待していますが、もしそうであれば、リテラル内の他のメソッドの中でどのようにアクセスできますか? – Jeff
@ジェフ:プラグインに完全に依存します。それぞれのメソッドを別々に扱い、引数を受け入れる必要があるかどうか(または単一のオプション引数)、そしてデフォルトを持つべきかどうかを判断する必要があります。ですから、 'init'がデフォルトを持つオプションを持つのが理にかなっているなら、そこで行います。他のメソッドのいずれかが独自の引数を必要とする場合は、自分自身を受け入れます。これはあなたが意味するものなのですか、間違ったトラックにいますか? – user113716
...私は、このチュートリアルでは、プラグインを開発する際の特定のパターンの例を挙げています。これは唯一の方法ではありませんが、呼び出す必要のあるメソッドが複数ある場合は、すべての名前を1つのプラグインの下に置きます。 – user113716