2011-06-12 3 views
0

Je voudrais écrire un plugin qui peut être utilisé de la manière suivante:Méthodes pour un objet spécifique (non prototypé)

var img = $('#someImage').Image(); 

ou peut-être:

var img = $.Image({id: 'someImage', src: '/...'}); 

et pouvoir pour faire des fonctions liées à l'image:

img.highlight(); 
img.showAlter(); 

et cetera. Cependant, je ne veux pas faire:

$.fn.highlight = function() {} 

car cela applique à tous les objets jQuery et je veux que ma méthode pour appliquer uniquement à ces objets que j'ai appelé .Image() sur.

est ce que je demande possible? Comment?

Répondre

1

Vous auriez besoin de placer votre fonction Image sur le prototype (fn), mais le plugin Image affecter les highlight et showAfter fonctions à cet objet jQuery spécifique sur lequel .Image() est appelé.

(function($) { 
    $.fn.Image = function(props) { 
     this.highlight = function(){ 
      this.each(function() { 
       $(this).css('border', "5px dashed yellow"); 
      }); 
     }; 
     this.showAfter = function(){}; 
     return this; 
    }; 
})(jQuery); 


var img = $('img').Image(); 

img.highlight(); 

EDIT:

Pour clarifier les choses, this dans la fonction Image est une référence à l'objet jQuery contre lequel Image() a été invoquée.

this fait ne pas référence la fonction Image en aucune façon.

Exemple:http://jsfiddle.net/saYLm/

+0

voir ma réponse à Paul – ekkis

+0

@ekkis: Ma réponse est entièrement différente de celle de @ Paul. Avec le mien, vous assignez 'highlight' et' showAfter' directement à l'objet jQuery en tant que propriété, donc vous serez capable de faire 'img.highlight()'. – user113716

+0

@ekkis: J'ai mis à jour ma réponse avec plus d'informations, et j'ai corrigé une faute de frappe où j'ai raté un ')'. – user113716

0

$ .fn.image.highlight = function() {}

supposant que vous avez écrit un plugin image nommée ceci prototype de la fonction de mise en évidence à cet objet

+1

oui mais cela me ferait faire 'img.Image.highlight()' et ce que je veux faire c'est 'img.highlight()' – ekkis

Questions connexes