これが公式のjqueryプラグインガイドです。
関数のラッピングに関する部分はここにあります(「プラグインメソッド」)(例はツールチッププラグインになります):
(function( $ ){
var methods = {
init : function(options) { ... },
show : function() { ... },
hide : function() { ... },
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);
[更新]methods[ method ].apply( this, Array.prototype.slice.call( arguments, 1 ))
ガイドの行を説明する:
$(selector).tooltip('update', 'hello')
javascriptコードから呼び出す場合は、呼び出しの期間中、をに設定して、引数としてupdate
渡すメソッドを呼び出すことになります。'hello'
content
this
$(selector)
それがこの行が処理するものです:
- がメソッドの場合
method == 'update'
、methods[method]
update
arguments
に等しくなり['update', 'hello']
ます。メソッドに渡したい引数を取得するには、最初の要素を削除する必要があります。これはまさに何をするかですArray.prototype.slice.call(arguments, 1)
、
myFunc.apply(obj, argsArray)
関数myFunc
を呼び出し、引数として渡し、呼び出し中にargsArray
に設定this
しobj
ます。
this.each(...)
したがって、メソッド内で、セレクターのすべての項目を反復処理するために呼び出すことができます。例:
update: function(content) {
this.each(function(){ $(this).data('tooltip.content', content); });
return this;
}