2012-07-15 52 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; 
}); 

但是,我注意到裏面的函數(數據){...)選擇器'這'不起作用。我需要刪除最接近$('.delete-post') div類「.post」。如何管理這個問題?謝謝!

回答

10

$(this)存在於click event中,但function(data) {不是單擊事件rather callback function的一部分。因此,將$(this)保存在一些變量中,例如that以備後用。

試試這個:

$('.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

你應該解釋爲什麼'this'有回調不同的值。 – jfriend00 2012-07-15 19:21:22

+0

我已經解釋了謝謝你提醒我@ jfriend00 – Adil 2012-07-15 19:22:17

+0

非常感謝你,現在我明白了!簡單明瞭) – f1nn 2012-07-15 19:25:35

相關問題