2011-01-24 81 views
1

我在使用JQuery做AJAX文章時更新DOM時遇到問題。這是jQuery代碼:在JQuery AJAX中指定DOM元素

 $('.answerForm').live('submit', function(event) { 
      event.preventDefault(); 
      $.post($(this).attr('action'), $(this).serialize(), 
       function(data){ 
        if (data.success) { 
         $(this).hide(); 
        } 
        else { 
         alert("not success"); 
        } 
       }, "json"); 
     }); 

我的工作&回答網站上的問題。當用戶按下「回覆」時,答案表單(class ='answerForm',no id)被注入到DOM中。如果成功發生,我想要做的就是隱藏答案表單,並用答案替換下一個答案。但它看起來像我不能在函數(數據)中使用$(this)。

我想知道是否有機會選擇正確的DOM對象,除了用ID標記所有的東西。

感謝

回答

2

捕捉上下文到一個變量,並用它成功回調中:

$('.answerForm').live('submit', function(event) { 
    event.preventDefault(); 
    var that = this; 
    $.post($(this).attr('action'), $(this).serialize(), function() { 
     ... 
     $(that).hide(); 

此外,如果您有興趣,如果你使用$.ajax有一個context option這使得對象中的所有回調的背景下,如此:

$.ajax({ 
    url: $(this).attr('action'), 
    context: this, 
    success: function() { 
     $(this).hide(); 
    } 
}); 
0

創建一個名爲成功處理程序一樣

function mySuccessHandler(data) { 
    $(this).hide(); 
} 

然後在您的通話後,你可以做

$.post($(this).attr('action'), $(this).serialize(), $.proxy(mySuccessHandler, this))