@samer Thanks
@anyone Let me know if you have any questions. On Jun 24, 9:54 pm, Samer <samerzia...@gmail.com> wrote: > @tres > Nice plugin > > On Jun 23, 7:34 pm, tres <treshug...@gmail.com> wrote: > > > > > Check this > > thread:http://groups.google.com/group/jquery-dev/browse_thread/thread/664cb8... > > > I've written a plugin to allow you to call methods as they should be > > called on a plugin while still using 'this' to refer to the DOM > > collection inside the plugin as you would in jQuery. There are a few > > examples there, but you can email me if you have any questions, given > > that you decide to use it. It's a similar approach to samer's, but it > > does a lot of the setup work involved for you. > > > @Damir Zekić > > > Chaining in jQuery isn't necessarily a "convention" per say, but it is > > a good practice to do so when practical. To put it in context, if you > > do namespace your plugin it might be better to return an instance of > > the plugin in certain methods rather than jQuery. Alternatively, the > > method might return a scalar value, etc. > > > $('div').myPlugin().moveRight().moveLeft() might be more efficient in > > the long run than $('div').myPlugin().moveRight().myPlugin().moveLeft > > (), but it all depends on how you design the API to be used. > > > The plugin for writing plugins that I give in the thread linked to > > above explains that 'this' within the context of the plugin refers to > > the selected DOM elements as it would in jQuery, which brings a lot of > > flexibility into plugin namespacing. > > > -- > > Trey > > > On Jun 24, 2:50 am, Bob Spryn <bobsp...@gmail.com> wrote: > > > > Cool. Good suggestion. Very smart. > > > > Thanks, > > > Bob > > > > On Jun 23, 2:48 am, samer <samerzia...@gmail.com> wrote: > > > > > It's not wrong, but to save you all the lines in the switch you could > > > > implement your functions (init, advance, ...) in an object like > > > > var jMyPlugin = { init: function().... > > > > > or > > > > > jMyPlugin.prototype.init > > > > > or whatever > > > > > so then your switch case could be replaced with > > > > } else if (typeof options === "string"){ > > > > jMyPlugin[option]; > > > > } > > > > > On Jun 23, 2:26 am, Bob Spryn <bobsp...@gmail.com> wrote: > > > > > > So here's what I've done and it seems to be working pretty well. Let > > > > > me know if I'm doing anything weird. (I'm going to provide access to > > > > > the default options object publicly at some point, but its working for > > > > > now) > > > > > > //Simple screen wizard plugin > > > > > ;(function($) { > > > > > $.fn.screenWizard = function (options) { > > > > > > var defaultOptions = { > > > > > size : "100", > > > > > duration : 1000, > > > > > defaultLeft : 0 > > > > > }; > > > > > > if (typeof options === "object") { > > > > > return init(this, options); > > > > > } else if (typeof options === "string"){ > > > > > switch (options) { > > > > > case "advance": > > > > > return advance(this); > > > > > break; > > > > > case "back": > > > > > return back(this); > > > > > break; > > > > > case "reset": > > > > > default: > > > > > return reset(this); > > > > > break; > > > > > > } > > > > > } > > > > > > function init(obj, options){ > > > > > obj.settings = $.extend(defaultOptions, > > > > > options); > > > > > return obj.each(function(){}); > > > > > }; > > > > > > function advance(obj){ > > > > > return obj.each(function(){ > > > > > var current = > > > > > parseInt($(obj).css("left")); > > > > > $(this).animate({left: (current - > > > > > obj.settings.size) + "px"}, > > > > > obj.settings.duration); > > > > > }); > > > > > }; > > > > > > function back(obj){ > > > > > return obj.each(function(){ > > > > > var current = > > > > > parseInt($(obj).css("left")); > > > > > $(this).animate({left: (current + > > > > > obj.settings.size) + "px"}, > > > > > obj.settings.duration); > > > > > }); > > > > > }; > > > > > > function reset(obj){ > > > > > return obj.each(function(){ > > > > > $(this).animate({left: > > > > > obj.settings.defaultLeft }, > > > > > obj.settings.duration); > > > > > }); > > > > > }; > > > > > > }; > > > > > > })(jQuery); --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "jQuery Development" group. To post to this group, send email to jquery-dev@googlegroups.com To unsubscribe from this group, send email to jquery-dev+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/jquery-dev?hl=en -~----------~----~----~----~------~----~------~--~---