@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
-~----------~----~----~----~------~----~------~--~---