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. >