Public functions from within a jQuery plugin
If you do something like the following:
(function($){
$.fn.myPlugin = function(options) {
// support multiple elements
if (this.length > 1){
this.each(function() { $(this).myPlugin(options) });
return this;
}
// private variables
var pOne = '';
var pTwo = '';
// ...
// private methods
var foo = function() {
// do something ...
}
// ...
// public methods
this.initialize = function() {
// do something ...
return this;
};
this.bar = function() {
// do something ...
};
return this.initialize();
}
})(jQuery);
Then you can access any of your public methods:
var myPlugin = $('#id').myPlugin();
myPlugin.bar();
This is taken from this very helpful article (May 2009) from trulyevil.com which is itself an extension on this article (Oct 2007) from learningjquery.com.
Ok, i figured out how to do this:
Plugin Code:
$.ajaxIcon.init = function(element, options) {
//your initialization code
this.start = function() {
//start code
}
this.stop = function() {
//stop code
}
}
$.fn.ajaxIcon = function(options) {
this.each(function () {
//This is where the magic happens
jQuery(this).data('ajaxIcon', new jQuery.ajaxIcon.init(this, opts));
});
return this;
}
Then to use it somewhere else in your code:
var myIcon = $("#myId").ajaxIcon.data('ajaxIcon')
// myIcon: a reference to the 'init' object specific to this plugin instance
myIcon.start();
myIcon.stop();
voila, answered my own question :)