あるメソッドからサブシーケンスメソッドにデフォルトオプションを渡すにはどうすればよいですか?
たとえば、メソッドにはデフォルト設定があります。init
これらの設定を、、などの他の方法に使用したいと思いますshow
。
(function($) {
var methods = {
init: function(options) {
var defaults = {
element: "selection"
}
var options = $.extend(defaults, options);
var o = options;
alert(o.element);
},
show: function(o) {
alert(o.element);
},
hide: function() {
alert(o.element);
}
};
$.fn.plugin = 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 );
var blah = $('#hello').plugin('show'); // TypeError: o is undefined
私は答えとして得たいと思いselection
ます...それは可能ですか?
編集:
(function($) {
$.fn.plugin = 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' );
}
};
$.fn.plugin.defaults = {
attr: 'checked',
expected: true,
onChange: function(){}
};
var methods = {
init: function(options) {
var options = $.extend({}, $.fn.plugin.defaults, options);
var o = options;
var $this = this;
$this.show();
//alert(o.attr);
},
show: function(options) {
var options = $.extend({}, $.fn.plugin.defaults, options);
var o = options;
alert(o.expected);
},
hide: function(object) {
alert(o.element);
}
};
})( jQuery );
var blah = $('#hello').plugin('show',{expected:"#hello world"});
今私は#hello world
(正しい)を得る
しかし、
var blah = $('#hello').plugin('init'); // returns nothing
にアクセスtrue
しているので、答えとして取得したいと思います。では、メソッドから他のメソッドにアクセスするにはどうすればよいですか?init
show