2012-02-05 10 views
5

'Bu' referansı, birkaç yöntemleri, JQuery bir yardımıyla bir isteğin gönderilirken bir uyumsuz içeren bir yöntemi vardır ($.ajax). İstek başarılı olduğunda, Görev sınıfının belirli bir yöntemini (örn. SuccessFunction) gerçekleştirmesi gerekir.Ben</p> <p>bir "sınıf" Görev yoktur javascript nesne programlama küçük bir sorun var JavaScript

sorun, bu bağlam değiştiği için, anahtar kelime this kullanılarak sınıfına atıfta imkansızdır ve bu, gerçekleştirir jquery nesne bir referans içerir successFunction gövdesinde terimi sonra ajax-isteği.

Geçerli Görev nesnesine, doğrudan değil, harici olarak var olan bir işlev içindeki hangi varyasyonları başvuruda bulunabilir? (Örneğin, bir olay ya da ajax tarafından)

cevap

9

Normalde, bir geri bildirim gibi bir AJAX olayının içinde, this, $.ajax çağrısı tarafından döndürülen nesneyi belirtir. Nesnenin referans tutan bir değişkeni tanımlamak

$.ajax({ 
    url: '/foo', 
    context: { element: this, foo: 'bar' }, 
    success: function(result) { 
     // you can use 'this.element' and 'this.foo' here 
    } 
}); 
+0

Teşekkürler, bu tam olarak neye ihtiyacım var. – JN0iZzze

7

:

$.ajax({ 
    url: '/foo', 
    context: this, // <!-- change the context of the success callback 
    success: function(result) { 
     // 'this' here will refer to whatever it refered outside 
    } 
}); 

Ayrıca karmaşık nesnelerin geçebileceği: Eğer başarılı geri arama içeriğini değiştirmek context parametre kullanabilir

function Task() { 
    var that = this; 
    this.call = function() { 
    $.ajax({ 
     url: '/foo', 
     success: function(result) { 
     console.log(that); // <-- you cann access this object via that 
     } 
    }); 
    }; 
} 
+0

+1, '' için. –

+0

+1, Crockford 'bu' tarzı. – dwerner