2011-12-22 11 views
11

Bu deyim her zaman doğru mu?

$("p").click(function(event) { 
    alert(event.currentTarget === this); 
}); 

Bir yöntem tercih edilir mi? event.currentTarget yerine $(this) kullanmayı severim, ancak bazı durumlarda daha iyi yapabilir miyim? Hangisi daha iyi? Kesinlikle aynı mı?

Ve başka bir nüans - console.log(this) ve console.log($(this)) firebug üzerinde kontrol ederken bana tam olarak aynı elementi verir. Onlar aynıysa - farklı olan nedir? Ben bu $(this).css('color','white') yazabilirim biliyorum ama this.css('color','white')

cevap

13

Genel olarak, evet, aynı olacaktır. Bu, içeriği manipüle etmek için $.proxy'u kullanarak farklı yapabilir, ancak pratikte muhtemelen asla olmayacaksınız.

$(document.body).on('click', $.proxy(function(e) { 
    console.log(this);   // window 
    console.log(e.currentTarget); // document.body 
}, window)); 

Diğer soruya gelince,bu DOM öğesini sarmalayan bir jQuery nesnesiyken this yerel bir DOM öğesidir. JQuery sarıcısı, yerel DOM öğelerinde bulunmayan css gibi jQuery işlevlerini çalıştırabileceğiniz anlamına gelir.


Ve Sorunuzun kesin ifadeler cevap, event.currentTarget değil $(this) için, this normalde eşittir.

+0

:(bir dakika çok geç. –

0

yazamıyor çünkü (Bu özellik genellikle fonksiyonun bu eşit olacaktır.

Eğer jQuery.proxy veya kapsam manipülasyon başka bir form kullanıyorsanız, Bu, sağladığınız bağlama eşit olacak, değil, event.currentTarget

1

Cevabınızın bir kısmı yukarıda. Umarım yeterince açık.

console.log(this) ve console.log($j(this)) aynı sonucu vermez. $ (this) bunu bir jQuery Nesnesine dönüştürür ve bu nedenle jQuery nesnelerinde ($ (this)) çağrılabilen ve this olacak HTML öğelerini değil .css gibi yöntemleri çağırabilirsiniz.

İlgili konular