2011-02-15 18 views
37

Próbuję napisać wtyczkę, która rozszerzy istniejącą funkcję w jQuery, np.Rozszerzanie istniejącej funkcji jQuery

(function($) 
{ 
    $.fn.css = function() 
    { 
     // stuff I will be extending 
     // that doesn't affect/change 
     // the way .css() works 
    }; 
})(jQuery); 

Istnieje tylko kilka bitów muszę przedłużyć funkcji .css(). Proszę mi pozwolić, żebym zapytał, myślałem o klasach PHP, ponieważ można className extend existingClass, więc pytam, czy możliwe jest rozszerzenie funkcji jQuery.

+2

co będziecie dodawać? –

Odpowiedz

73

Jasne ... Wystarczy zapisać odniesienie do istniejącej funkcji, i nazywają go:

(function($) 
{ 
    // maintain a reference to the existing function 
    var oldcss = $.fn.css; 
    // ...before overwriting the jQuery extension point 
    $.fn.css = function() 
    { 
     // original behavior - use function.apply to preserve context 
     var ret = oldcss.apply(this, arguments); 

     // stuff I will be extending 
     // that doesn't affect/change 
     // the way .css() works 

     // preserve return value (probably the jQuery object...) 
     return ret; 
    }; 
})(jQuery); 
+13

Dobra odpowiedź, ale powinieneś ** zwrócić ** zastosowaną metodę, aby łańcuch jQuerys utrzymał przy życiu. – jAndy

+1

@jAndy: doskonały punkt, dzięki! –

0

Peter Errikson napisać kod bardzo usfull w extending jQuery with two new events, onShow and onHide z jsfiddle próbki kodu ...

Sugeruję przeczytanie tego artykułu ... wygląda bardzo ładnie :)

+2

powinieneś wziąć interesujący artykuł i umieścić go w odpowiedzi, odpowiedzi tylko link nie są ogólnie akceptowane przez SO –

+0

, ale odpowiada na to pytanie! czy powinienem ponownie napisać ten kod? !! –

+1

lepiej jest umieścić tutaj istotne części odpowiedzi (nawet po ponownym skopiowaniu kodu) i podać link do odsyłacza. Odpowiedzi tylko na link mogą stać się nieważne, jeśli połączona strona zmieni się –

Powiązane problemy