I would like to create a jQuery plugin with an API something like this:
$("#chart").pluginName().attr("my_attr");
Instead of these:
$("#chart").pluginName_attr("my_attr");
$.pluginName.attr("#chart", "my_attr");
Basically, instead of having to namespace every method that acts similar to ones in jQuery, I’d like to “scope” the methods to a custom api, where $("#chart).pluginName() would return an object such that get, attr, find, and a few others would be completely rewritten.
I’m sure this is not a well-liked idea as it breaks convention (does it?), but it’s easier and more readable, and probably more optimized, than the two options above. What are your thoughts?
I’m experimenting with the idea.
Seems like you could just modify the functions for the jQuery object that the plugin receives, and return that.
Something like this:
http://jsfiddle.net/EzzQL/1/ (updated from original to overwrite .html() as well)
EDIT:
Alternatively, if you’re going to cache the elements to which the custom methods should be applied, you could
.apply()the methods before you use them.To build on the example above: