Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Superior jQuery plugin template (websanova.com)
46 points by nvitas on March 19, 2012 | hide | past | favorite | 16 comments


Here's my thoughts:

1. Ability to modify default settings It is sometimes nice to set the global defaults.

2. Ability to expose methods. A nice way of calling the someFunc() would be nice. I guess you can do it like this: $(...).data('_wTooltip').someFunc(); but using the data() seems a bit hacky.

3. Use settings from html5 data-attribute, ie data-tooltip='{"foo":"baar"}'. Not really necessary for the example plugin, but I think it could be for others. I hate it when I need initialize every instance separately just to specify it's options, when they could be specified in the markup.

4. Missing var before $settings. Just a typo I guess?

5. I think the name generate() is a bit misleading, init() or initialize() makes more sense to me.


I like your points for 1 and 2, will add those in the next iteration, constantly trying to improve this thing.

I didn't use init() because sometimes I may use init to do something else that doesn't deal with generating the plugin code, so I ended up going with generate(), maybe create() would be a better word.


Not sure you should be (ab)using data- attributes like that. They’re already a key/value pair so you markup your data as <div data-tooltip-foo="baa" data-tooltip-qux="quux">


If you have many options, they are easier to retrieve, just call .data('tooltip') and jQuery will do the parsing of the object. Using separate attributes you would have to call .data() for every attribute. Anyway, I guess any of the two methods would be fine! :-)


6. Prevention of double instantiation.


A recipe like this (also a tooltip), but approved by the jQuery team and with much more explanation is available at http://docs.jquery.com/Plugins/Authoring


ya, I don't really like their method approach, they don't use prototyping.


Just wanted to let you know I used your boilerplate for my first jQuery plugin recently - https://github.com/indyarmy/jQuery.awesomeCloud.plugin/

Thanks a lot, it saved me a pile o'trouble :)


The first line of $.fn.wTooltip is

  if(typeof option === 'object')
Does anyone know where option is declared and where its value is set?


It's meant to be the first argument passed to the plugin, e.g.

  $("#bla").wTooltip({foo: "bar"})


My bad, fixed it, was supposed to be here:

    $.fn.wTooltip = function(option, settings)


'Untested' and 'superior' are not happy bedfellows!


lol, just a typo ;)


What happens if I type:

    $("blah").wTooltip(new String("color"));
In my recent jquery plugin I considered doing a typeof check myself but decided against it since it was too brittle. I instead checked to see if the options was === what I expected it to be first.


Well, I think this is getting a little nit picky. I would rather have a smaller footprint for my plugin then putting a bunch of checks like this in. I don't think I've ever passed in a string that way, that would seem to me like a very rare condition.


Crockford must be rolling over in his bed right now




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: