By the way, you'll have trouble if you use defaults like this: $.fn.myPlugin1 = function(options) { var myOptions = $.extend(defaults, options);
since that will actually extend the defaults object and your "defaults" will be changed whatever was in "options" for the next time you use the plugin. Try $.fn.myPlugin1 = function(options) { var myOptions = $.extend( {}, defaults, options); which creates a new object to accumulate the options. Danny On Mar 4, 2:13 pm, "Mike Alsup" <[EMAIL PROTECTED]> wrote: > If you want to use two different functions in the chain then you need > to define two plugin functions: > > // wrap it all in a closure so you can share private data easily > (function() { > > $.fn.myPlugin1 = function(options) { > var myOptions = $.extend(defaults, options); > // do stuff > > }; > > $.fn.myPlugin2 = function(options) { > var myOptions = $.extend(defaults, options); > // do stuff > > }; > > var defaults = { > def1: 'default1', > def2: 'default2', > ... > defx: 'defaultx' > > }; > })(); > On Tue, Mar 4, 2008 at 2:09 PM, Leanan <[EMAIL PROTECTED]> wrote: > > > Ok, I'm really trying to wrap my head around this, and it's irritating > > me. I've checked out the following pages: > > > http://docs.jquery.com/Plugins/Authoring > > http://www.learningjquery.com/2007/10/a-plugin-development-pattern > > > And they help some but there's one problem I'm running into. > > > I have: > > > $.fn.myPlugin = function(options) { > > $.myPlugin.defaults = $.extend($.myPlugin.defaults, options); > > return(this); > > }; > > > $.myPlugin = { > > defaults: { > > def1: 'default1', > > def2: 'default2', > > ... > > defx: 'defaultx' > > }, > > > myFunc: function() { > > var options = $.myPlugin.defaults; > > //do something here, anything really > > }, > > > myFunc2: function() { > > var options = $.myPlugin.defaults; > > //do something here, again, anything > > } > > }; > > > Now, I want to do something like this: > > > jQuery().myPlugin({def1: 'other_def1', def2: 'other_def2'}).myFunc(); > > > Can I? > > > Because it's not working. It tells me that jQuery().myPlugin({def1: > > 'other_def1', def2: 'other_def2'}) is not a function. > > > However, if I change it so that myFunc is $.fn.myFunc = function() > > { }, then I can, but I have to do it as: > > > jQuery().myPlugin({def1: 'other_def1', def2: > > 'other_def2'}).myPlugin.myFunc(); > > > Which I don't like. > > > None of the tutorials or documentation I can find is clear on this > > point, though they do refer to the functions in $.myPlugin as being > > user-accessable... and they are, but only if I do $.myPlugin.myFunc. > > I can't chain. And I want to be able to do that.