2012-06-05 11 views
15

Gibt es eine Möglichkeit, Methoden zu jQuery-Objekten hinzuzufügen?Wie fügen Sie dem jQuery-Objekt neue Methoden hinzu?

Zum Beispiel habe ich jQuery-Objekt

a = $('div') 

Ich möchte, dass jedes Objekt, das so zugewiesen wurde, würde bestimmte Methode haben (doSomething()), so konnte ich es aufrufen, wie

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

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

Antwort

16

fügen Sie Ihre Funktion diehinzufügenNamespace. Beachten Sie, dass innerhalb der Funktion this auf das jQuery-Objekt und nicht auf ein DOM-Objekt verweist.

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

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

jsFiddle Demo

über writing jQuery plugins für zusätzliche Richtlinien Bitte lesen.

1

es wie Sie müssen

$.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

Ich würde nur darauf hinweisen, dass dies Auswirkungen auf * alle * jQuery-Objekt erstellt. – jAndy

+0

@jAndy Aktualisierte Antwort, können Sie bitte überprüfen und bestätigen, ob es jetzt korrekt ist. –

+0

'.css()' Methode ist kein wirklich gutes Beispiel hier, macht die Verwendung von '.each()' sinnlos. – kapa

Verwandte Themen