2010-09-13 52 views
6

我正在用parent()和nearest()函數進行測試,沒有在函數內工作。jQuery - parent()在回調函數中不起作用

TD保持使用這種方法相同,沒有變化:

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

TD得到更新,這種方法可行:

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

能否請你幫我找出爲什麼closest('td')在回調函數中不工作?

回答

6

您的this裏面的回調函數有另一個範圍比this在外面。你需要做這樣的事情:

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

您可以使用jQuery的.proxy()-function達到預期的效果,太像帕特里克DW在他的帖子中指出。我建議通過this document閱讀。

+0

這很快,它的工作!我並不知道'this'在$ .get中的作用是不同的,這是另一個需要學習的課程。謝謝你們倆! – 2010-09-13 16:35:18

+0

'這個'在不同的功能中有不同的作用。 JavaScript具有功能範圍。 'this'指向當前的上下文/範圍。 – jwueller 2010-09-13 16:40:18

3

您可以使用jQuery's $.proxy method作爲$.get()的第二個參數以保留期望值this

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