jQuery のドキュメントでは、プラグインにデフォルト値を設定し、ユーザーが任意のカスタム値を送信できるようにすることを推奨しています。そのために、ユーザーは を使用してカスタム値をオブジェクトとして渡します$.fn.tooltip = function( options ) {}
。私には理にかなっています。
その後、同じ記事の後半で、すべてのプラグインのメソッドをメソッドと呼ばれるオブジェクト リテラルに収集し、メソッドの文字列名 ( $.fn.tooltip = function( method ) {}
.
では、オプションまたはメソッドを に送信していますか$.fn.tooltip = function( ? ) {}
?
また、メソッド オブジェクトがプラグインの外部で宣言されているのはなぜですか?
ソース: http://docs.jquery.com/Plugins/Authoring#Defaults_and_Options
(function( $ ){
$.fn.tooltip = function( options ) {
// Create some defaults, extending them with any options that were provided
var settings = $.extend( {
'location' : 'top',
'background-color' : 'blue'
}, options);
return this.each(function() {
// Tooltip plugin code here
});
};
})( jQuery );
ソース: http://docs.jquery.com/Plugins/Authoring#Plugin_Methods
(function( $ ){
var methods = {
init : function( options ) {
// THIS
},
show : function( ) {
// IS
},
hide : function( ) {
// GOOD
},
update : function( content ) {
// !!!
}
};
$.fn.tooltip = function( method ) {
// Method calling logic
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 );
// calls the init method
$('div').tooltip();
// calls the init method
$('div').tooltip({
foo : 'bar'
});