2010-09-13 29 views
6

Ebeveyn() ve en yakın() ile test ediyordum, hiçbiri işlevin içinde çalışmaz. Bu yöntem çalışırjQuery - parent() geri arama işlevi içinde çalışmıyor

$.get('form.php', function(data){ 
    alert(data); 
    $(this).closest('td').html('Done!'); 
}); 

TD güncellenir:

$.get('form.php', function(data){ 
    alert(data); 
}); 
$(this).closest('td').html('Done!'); 

sen neden yaptığını bana anlamaya yardım edebilir

TD bu yöntemi kullanarak aynı, hiçbir değişiklik kalır closest('td') geri arama fonksiyonu içinde çalışmıyor mu? Geri arama fonksiyonunun

cevap

6

Sizin this içeride dışarıda this daha başka kapsamı vardır. Böyle bir şey yapmanız gerekir: Patrick dw görevinden de işaret gibi

var self = this; 
$.get('form.php', function(data) { 
    alert(data); 
    $(self).closest('td').html('Done!'); 
}); 

Sen de istenen etkiyi elde etmek için jQuery en .proxy()-function kullanabilirsiniz. this document'u okumanızı tavsiye ederim.

+0

Hızlıydı ve işe yaradı! Fark ettim ki, bu '' '$ .get’in içinde farklı bir şekilde çalışıyor, öğrenmesi gereken başka bir ders. İkinize de teşekkürler! –

+0

'Bu, farklı işlevlerin içinde farklı çalışır. JavaScript'in fonksiyon kapsamı vardır. Bu, geçerli bağlam/kapsamı işaret eder. – jwueller

3

this istenen değerini korumak için $.get() için ikinci bağımsız değişken için jQuery's $.proxy method kullanabilirsiniz.

$.get('form.php', $.proxy(function(data) { 
    alert(data); 
    $(this).closest('td').html('Done!'); 
}, this)); 
İlgili konular