6

私はparent()とclosest()でテストしていましたが、関数内で機能するものはありません。

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!');
});

patrick dwが彼の投稿で指摘したように、jQueryの関数を使用して目的の効果を実現することもでき.proxy()ます。このドキュメントを読むことをお勧めします。

于 2010-09-13T16:21:39.070 に答える
3

の2番目の引数にjQueryの$.proxyメソッドを使用$.get()して、の目的の値を保持できますthis

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