2012-07-15 10 views
6

にコールバック関数内で使用可能な重複を動作しません:
$(this) doesn't work in a functionjQueryの - 「この」セレクタが

私は自分自身削除を経由して行われ、jQueryの内のコードを削除する記事を書いていますサーバーが200を返した後、私はクライアントサイドでこの投稿を削除します。

$('.delete-post').click(function() { 
    $.post($(this).attr('href'), {}, function(data) { 
     $(this).closest('.post').remove(); 
    }); 
    return false; 
}); 

しかし、私はfunction(data){...)セレクタの 'this'が機能しないことに気付きました。クラス '.post'で$('.delete-post') divに最も近いものを削除する必要があります。この問題の管理方法は?ありがとう!

答えて

10

$(this)click eventに存在しますが、function(data) {はクリックイベントrather callback functionの一部ではありません。したがって、後で使用するために、$(this)を例えばthatの変数に保存してください。

これを試してみてください: `this`がコールバックで異なる値を持っている理由を説明しなければならない

$('.delete-post').click(function(e) { 
    e.preventDefault(); 
    var that = $(this); 
    $.post(that.attr('href'), { }, function(data) { 
     // $(this).closest('.post').remove(); 
     that.closest('.post').remove(); 
    }); 
}); 
+2

。 – jfriend00

+0

私はすでに@ jfriend00を思い出させるための感謝を説明しました – Adil

+0

ありがとう、今私はそれを持っている!シンプルでクリア) – f1nn