Lee, I've sent you an email, but here it is for everyone else:
-- Sorry, I didn't see your post. Google groups can be difficult sometimes. Anyways, sorry about that. Since there is no official release yet and I have yet to document it fully, the code has changed slightly. I've changed it so that it follows JavaScript's paradigm more closely. There are 3 ways to attach plugins to $ or $.fn. The following pass in Firefox, IE7, Chrome and Safari. IE6, IE8 and Opera haven't been tested yet. I hope this helps. You can also grab the plugin off Google Code at: http://code.google.com/p/jquery-plugin-dev/source/browse/trunk/jquery.plugin.js. CODE: ---------------------------------------------------------------------------------------- <script type="text/javascript" src="jquery-1.3.2.js"></script> <script type="text/javascript" src="jquery.plugin.js"></script> <script type="text/javascript"> ;(function($) { /* * 1st method * * Static : No constructor */ // static plugin $.plugin.add('test1'); // then use .fn or .prototype on that plugin to add methods $.test1.staticMethod = function(arg) { alert(arg); return this; }; // then use .fn or .prototype on that plugin to add methods $.test1.fn.instanceMethod = function(arg) { alert(arg); return this; }; /* * 2nd method * * Static : Passing an anonymous constructor */ // static plugin $.plugin.add('test2', function() { alert('initializing test2...'); return this; }); $.test2.staticMethod = function(arg) { alert(arg); return this; }; $.test2.fn.instanceMethod = function(arg) { alert(arg); return this; }; /* * 3rd method * * Static : Passing an already defined constructor */ // create your plugin var test3 = function() { alert('initializing test3...'); return this; } // a static method test3.staticMethod = function(arg) { alert(arg); return this; }; // an instance method // adding via .fn is only available after adding the plugin test3.prototype.instanceMethod = function(arg) { alert(arg); return this; }; // now add it $.plugin.add('test3', test3); /* * 4th method * * Instance : No constructor */ // static plugin $.fn.plugin.add('test4'); // then use .fn or .prototype on that plugin to add methods $.fn.test4.staticMethod = function(arg) { alert(arg); return this; }; // then use .fn or .prototype on that plugin to add methods $.fn.test4.fn.instanceMethod = function() { alert('test4 instanceMethod\nlength : ' + this.length + '\nselector : ' + this.selector + '\ncontext : ' + this.context); return this; }; /* * 5th method * * Instance : Passing an anonymous constructor */ // static plugin $.fn.plugin.add('test5', function() { alert('initializing test5...\nlength : ' + this.length + '\nselector : ' + this.selector + '\ncontext : ' + this.context); return this; }); $.fn.test5.staticMethod = function(arg) { alert(arg); return this; }; $.fn.test5.fn.instanceMethod = function() { alert('test5 instanceMethod\nlength : ' + this.length + '\nselector : ' + this.selector + '\ncontext : ' + this.context); return this; }; /* * 6th method * * Instance : Passing an already defined constructor */ // create your plugin function test6() { alert('initializing test6...\nlength : ' + this.length + '\nselector : ' + this.selector + '\ncontext : ' + this.context); return this; } // a static method test6.staticMethod = function(arg) { alert(arg); return this; }; // an instance method // adding via .fn is only available after adding the plugin test6.prototype.instanceMethod = function(arg) { alert('test6 instanceMethod\nlength : ' + this.length + '\nselector : ' + this.selector + '\ncontext : ' + this.context); return this; }; // now add it $.fn.plugin.add('test6', test6); })(jQuery); jQuery(function($) { // construct objects var test1 = $.test1('initializing test1...'), // nothing should happen test2 = $.test2('initializing test2...'), test3 = $.test3('initializing test3...'), test4 = $('div').test4(), // nothing should happen test5 = $('div').test5(), test6 = $('div').test6(); // test static methods $.test1.staticMethod('test1 : staticMethod'); $.test2.staticMethod('test2 : staticMethod'); $.test3.staticMethod('test3 : staticMethod'); $.fn.test4.staticMethod('test4 : staticMethod'); $.fn.test5.staticMethod('test5 : staticMethod'); $.fn.test6.staticMethod('test6 : staticMethod'); // test instance methods, can also be directly called // i.e. $.test6().instanceMethod(), but saving will allow // instance reuse test1.instanceMethod('test1 : instanceMethod'); test2.instanceMethod('test2 : instanceMethod'); test3.instanceMethod('test3 : instanceMethod'); test4.instanceMethod(); test5.instanceMethod(); test6.instanceMethod(); }); </script> <div> <p>Testing html...</p> </div> ---------------------------------------------------------------------------------------- On Apr 10, 3:25 am, Lee Henson <[email protected]> wrote: > Hi Trey > > I'm trying to use your jquery.plugin.js as a basis for creating aplugin. I've > got to : > > $.plugin.add('plugin_name', { > init: function(options) { > return this; > }, > > another_method: function() { > } > > }); > > But when I load the page I get a failure inside jquery.plugin.js > because of this line inside _add(fn, name, func): > > applyTo[name].fn = applyTo[name].prototype = _constructor.prototype = > func.fn = func.prototype; > > func is my object hash of functions, so it does not have a > func.prototype. This obviously causes all the assignments on that line > to be undefined, which causes errors when they are referenced. > > Am I missing something in my code? > > Cheers > Lee > > On Mar 30, 11:50 pm, tres <[email protected]> wrote: > > > Btw, Daniel, I have changed the API to accomodate this. > > > jQuery.plugin.add('name', func || objectOfFuncs), will now add a > > staticpluginand can be called like jQuery.name() or > > jQuery.name().method1(); > > > Static methods can be applied also by giving a static keyword with the > > function name: > > > jQuery.plugin.add('name', { > > someInstanceMethod : fucntion() {}, > > 'static:myStaticMethod' : function() {} > > > }); > > > then can be called: jQuery.name().someInstanceMethod() or > > jQuery.name.myStaticMethod(); > > > and > > > jQuery.fn.plugin.add('name', func || objectOfFuncs), will add it to > > jQuery's prototype and can be called jQuery('selector').name(). > > > jQuery.plugin.remove('name') and jQuery.fn.plugin.remove('name') work > > in a similar way. > > > I'm putting together a full documentation and examples soon. > > > -Trey > > > On Mar 5, 1:34 pm, Daniel Friesen <[email protected]> wrote: > > > > I think it could do with the ability to handle methods on jQuery itself > > > instead of being limited to just jQuery.fn, perhaps a second > > > object/function to addPlugin; > > > > Likewise I'd prefer jQuery.options over jQuery.fn.options; > > > > ~Daniel Friesen (Dantman, Nadir-Seen-Fire) [http://nadir-seen-fire.com] > > > -Nadir-Point & Wiki-Tools (http://nadir-point.com) (http://wiki-tools.com) > > > -MonkeyScript (http://monkeyscript.org) > > > -Animepedia (http://anime.wikia.com) > > > -Narutopedia (http://naruto.wikia.com) > > > -Soul Eater Wiki (http://souleater.wikia.com) > > > > [email protected] wrote: > > > > There has been a lot of activity aboutpluginauthoring and how it can > > > > be more structured and extensible. I've posted a couple of comments on > > > > some threads and sent an email to John, but I thought I'd create a new > > > > thread since I haven't had any feedback yet. John, I understand you > > > > probably get a lot of email and are very busy. > > > > > I've written apluginthat I'd like to get feedback on from you guys. > > > > It's still evolving, but should be stable in what it currently is > > > > designed to do and I have found it invaluable when authoring larger, > > > > more advanced plugins. It would be nice to see similar functionality > > > > built into jQuery as I think others would also find it useful. > > > > > Link:http://plugins.jquery.com/project/plugin-authoring > > > > > Cheers, > > > > Trey --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "jQuery Development" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/jquery-dev?hl=en -~----------~----~----~----~------~----~------~--~---
