6

我正在使用 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')不能在回调函数中工作吗?

4

2 回答 2

6

this的回调函数内部具有this与外部不同的范围。你需要做这样的事情:

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

您也可以使用 jQuery 的.proxy()-function来实现所需的效果,就像 patrick dw 在他的帖子中指出的那样。我建议通读这份文件

于 2010-09-13T16:21:39.070 回答
3

您可以使用jQuery 的$.proxy方法作为第二个参数$.get()来保留所需的this.

$.get('form.php', $.proxy(function(data) {
    alert(data);
    $(this).closest('td').html('Done!');
}, this));
于 2010-09-13T16:24:12.097 回答