2012-06-05 20 views
15

Czy istnieje jakiś sposób dodawania metod do obiektów jQuery?Jak dodać nowe metody do obiektu jQuery?

Na przykład, obiekt ma jQuery

a = $('div') 

Chętnie każdy przedmiot, który został przydzielony tak, że mają określony sposób (doSomething()), więc może wywołać go jak

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

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

Odpowiedz

16

trzeba dodać funkcję do $.fn namespace. Zwróć uwagę, że wewnątrz funkcji this będzie odwoływać się do obiektu jQuery, a nie obiektu DOM.

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

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

jsFiddle Demo

Proszę przeczytać o writing jQuery plugins dodatkowych wytycznych.

1

dodać go jak

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

Zaznaczę, że wpłynie to na * dowolny * obiekt jQuery. – jAndy

+0

@jAndy Zaktualizowana odpowiedź, czy możesz sprawdzić i potwierdzić czy teraz jest poprawna. –

+0

Metoda '.css()' nie jest tutaj dobrym przykładem, czyni użycie '.each()' bez sensu. – kapa

Powiązane problemy