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.

Reply via email to