May be something like this?
(function($) {
$.fn.editable = function(options) {
var defaults = {
// default value declarations
}
var opts = $.extend(defaults, options);
return this.each(function() {
var $this = $(this); // Cache a jQuery version of this
var tag = $this.get(0).tagName;
var obj;
this.doSomething = obj.doSomething;
switch (tag) {
case 'DIV': obj = new $.myDiv(); obj.init();
break;
case 'IMG': obj = new $.myImg(); obj.init();
break;
}
});
}
})(jQuery);
jQuery.myImg = function() {
{
this.init = initImg;
this.doSomething = imgFunction;
return this;
function initImg() {
}
function imgFunction() {
}
}
jQuery.myDiv= function() {
this.init = initDiv;
this.doSomething = divFunction;
return this;
function initDiv() {
}
function divFunction() {
}
}
On Jul 12, 6:37 pm, Harvey <[email protected]> wrote:
> Hey,
>
> I'm in the process of developing a new plugin but the way I have
> structured the codes doesn't seem quite right to me so I'm hoping
> someone might be able to offer a better way to do it.
>
> The plugin itself has different behaviour if called on different types
> of elements (images, divs etc) with a range of shared functions used
> across all element types.
>
> This is the basic structure I have so far:
>
> (function ($) {
> $.fn.editable = function (options) {
> var defaults = {
> // default value declarations
> }
>
> var opts = $.extend(defaults, options);
>
> return this.each(function () {
> var $this = $(this); // Cache a jQuery version of this
> var tag = $this.get(0).tagName;
>
> switch(tag) {
> case 'DIV': initDiv(); break;
> case 'IMG': initImage(); break;
> }
>
> function initDiv () {
> // initialise the plugin to work with divs
> }
>
> function initImage () {
> // initialise the plugin to work with images
> }
>
> // functions used by divs only
> function divFunction () {
> // body...
> }
>
> // functions used by images only
> function imageFunction () {
> // body...
> }
>
> // functions used by divs and images
> function sharedFunction () {
> // body...
> }
>
> });
> }
>
> })(jQuery);
>
> The reason it does seem right to me is because any instance of the
> plugin called on a div will also contain all the code that is used if
> it was an image even though the code won't be used.
>
> Can any offer something better?