2011-02-15 32 views
37

JQuery'de var olan bir işlevi genişletecek bir eklenti yazmaya çalışıyorum, ör.Varolan bir jQuery işlevinin genişletilmesi

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

sadece ben .css() fonksiyonun uzatmak gereken birkaç bit vardır. Sormak için bana sorun, ben className extend existingClass beri PHP sınıfları hakkında düşünüyordum, bu yüzden jQuery işlevleri genişletmek mümkün olup olmadığını soruyorum.

+2

Ne ekliyorsun? –

cevap

73

Tabii ... Hemen mevcut işlevine bir başvuru kaydetmek ve diyoruz: ...

(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

İyi cevap, ama ** uygulanan yöntemi ** döndürmelisiniz, böylece jQuerys zinciri canlı kalsın. – jAndy

+1

@jAndy: mükemmel nokta, teşekkürler! –

0

Peter Errikson jsfiddle kod örneği ile extending jQuery with two new events, onShow and onHide çok usfull kod yazmak

Ben bu makaleyi okuyan suggesst .. çok güzel görünüyor :)

+2

makalenin ilginç parçasını almalı ve cevaba koymalısınız, sadece cevaplar genellikle SO –

+0

tarafından iyi kabul edilmez, ancak bu soruya cevap verir! Bu kodu tekrar yazmalı mıyım? –

+1

Burada cevabın önemli kısımlarını buraya eklemek (daha sonra kodu kopyalamakla bile) ve referans için link vermek daha iyidir. Bağlantılı sayfa –

İlgili konular