8 ms·
Superior jQuery plugin template
- AndrewHampton 15y agoThe first line of $.fn.wTooltip is if(typeof option === 'object') Does anyone know where option is declared and where its value is set?
- rduchnik 15y agoMy bad, fixed it, was supposed to be here: $.fn.wTooltip = function(option, settings)
- ftyhgjn 15y ago'Untested' and 'superior' are not happy bedfellows!
- rduchnik 15y agolol, just a typo ;)
- axiak 15y agoWhat 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.
- rduchnik 15y agoWell, 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.
- lhorie 15y agoIt's meant to be the first argument passed to the plugin, e.g. $("#bla").wTooltip({foo: "bar"})
- deadbeef84 15y agoHere'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.
- deadbeef84 15y ago6. Prevention of double instantiation.
- robin_reala 15y agoNot 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">
- deadbeef84 15y agoIf 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! :-)
- rduchnik 15y agoI 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.
- emehrkay 15y agoCrockford must be rolling over in his bed right now
- paulirish 15y agoA 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 http://docs.jquery.com/Plugins/Authoring
- rduchnik 15y agoya, I don't really like their method approach, they don't use prototyping.
- Rust 15y agoJust wanted to let you know I used your boilerplate for my first jQuery plugin recently - https://github.com/indyarmy/jQuery.awesomeCloud.plugin/ https://github.com/indyarmy/jQuery.awesomeCloud.plugin/ Thanks a lot, it saved me a pile o'trouble :)