jQuery - parent()在回调函数中不起作用

时间:2010-09-13 16:18:10

标签: jquery function parent closest

我正在使用parent()和nearest()进行测试,没有在函数内工作。

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')无法在回调函数中工作?

2 个答案:

答案 0 :(得分:6)

回调函数中的this内部有另一个范围,而不是外部的this。你需要做这样的事情:

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

你也可以使用jQuery的.proxy()-function来达到预期的效果,就像patrick dw在他的帖子中指出的那样。我建议您阅读this document

答案 1 :(得分:3)

您可以使用jQuery's $.proxy method作为$.get()的第二个参数,以保留所需的this值。

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