Bu class plugin kullanarak JQuery'de bir Mootools tooltip sınıfını yeniden yazmaya çalışıyorum. Sınıfım başlatıldığında, araç ipucunu sönecek bir hedef dinleyiciye bir etkinlik dinleyicisi ekliyorum.JQuery eşdeğeri MooTools bind (this)
Geri arama durumunda JQuery, "this" anahtar sözcüğünü olayın hedefine atar, böylece sınıfın özelliklerine bir başvuru tutmak için sınıf örneğini ifade etmek üzere "this" öğesini ayarlamak için apply() kullanıyorum). Bu, Mootools'un kullanışlı bind() işlevinin JQuery'deki karşılığıdır.
Uyguladığım zaman ne yazık ki apply() işlevini kullandığımda geri arama parametresini kaybediyorum. Örneğin, bu satırda ikinci satırda bir "e tanımsız" hatası alıyorum.
this.target.bind('click', function(e){
e.preventDefault();
var tip = this.opts.tip;
tip.fadeOut(500, function(){
tip.bind('click', function(){
showing = false;
})
});
}.apply(this))
Burada bir numara eksik mi? Herkes bu konuda bir yol biliyor mu?
Teşekkür Fred
Dimitar, JS'nin bir yürüyüş ansiklopedisi! Detaylı açıklama için teşekkürler.Bu durumda bir referans önerisi en iyisi gibi görünüyor, bu yüzden şöyle yaparım: '\t var self = this; \t this.target.bind() işlev (e 'klik' {) \t \t e.preventDefault (; \t \t self.toggleTip(); \t}) 'benim init yönteminde toggleTip () ayrı bir tıklama geri aramadır. Büyük tavsiye, teşekkürler! –
@Dimitar: Gerçekten harika çalışıyor. thnx. (at) all: Bu fonksiyonel programlama tekniğinin körelme olarak adlandırıldığına dikkat edin (http://www.dustindiaz.com/javascript-curry/). jQuery, 'bind' yöntem adının benzer prototip uzantısına sahiptir, bu da bir şekilde kafa karıştırıcı olabilir, çünkü bunlar olayları işlemek için kullanılmaz ve işlevsiz olarak bildirilir. JQuery'de benzer amaçlar için $ .ajax'ta bir bağlam kullanımı da vardır. –