2012-06-05 12 views
15

C'è un modo per aggiungere metodi agli oggetti di jQuery?Come aggiungere nuovi metodi all'oggetto jQuery?

Ad esempio, ho oggetto jQuery

a = $('div') 

mi piacerebbe che ogni oggetto che è stato assegnato in quel modo, avrebbe avuto particolare metodo di (doSomething()) così ho potuto invocarla come

a = $('.foo') 
a.doSomething() 

b = $('.bar') 
b.doSomething() 

risposta

16

è necessario aggiungere la funzione al $.fn spazio dei nomi. Si noti che all'interno della funzione, this farà riferimento all'oggetto jQuery, non a un oggetto DOM.

$.fn.doSomething = function() { 
    this.css('color', 'red'); 
}; 

$('#retk').doSomething(); 

jsFiddle Demo

Si prega di leggere su writing jQuery plugins per le linee guida aggiuntive.

1

aggiungerlo come

$.fn.doSomething = function(data){ 
    // data is the argument passed to doSomething 
    return this.each(function(){ 
     var elem = $(this); 
     //perform operation on elem 
     // like to change background color use 
     elem.css('background-color','red'); 

    }); 
} 
+1

Vorrei solo sottolineare che questo influenzerà * qualsiasi * oggetto jQuery creato. – jAndy

+0

@jAndy Risposta aggiornata, puoi controllare e confermare se è corretta ora. –

+0

Il metodo '.css()' qui non è un buon esempio, rende inutile l'uso di '.each()'. – kapa

Problemi correlati