2012-04-24 93 views
2

我有一個div。在那個div裏面我有多個元素。一些元素具有類'myClass'。我也有一個按鈕。點擊後,foreach循環將針對div中具有class myClass的每個元素運行。爲每個元素髮送ajaxCall。這些元素的文本顏色默認爲黑色。在ajax調用成功的情況下。我想刪除類classBlackFont並添加一個classGreenFont。我嘗試了下面的代碼,但不幸的是沒有切換類事件,但Ajax調用成功。

$("#someDiv .myClass").each(function() { 

    var ajaxData = "myAjaxData"; 
    $.ajax({ 
     type: "POST", 
     url: "somefile.php", 
     data: ajaxData, 
     success: function(data) { 

      $(this).removeClass('classBlackFont').addClass('classGreenFont'); 
     } 
    }); 

});​ 

回答

12

this不會自動引用ajax回調中的正確對象。

$("#someDiv .myClass").each(function() { 
    var $this = $(this); 
    var ajaxData = "myAjaxData"; 
    $.ajax({ 
     type: "POST", 
     url: "somefile.php", 
     data: ajaxData, 
     success: function(data) { 
      $this.removeClass('classBlackFont').addClass('classGreenFont'); 
     } 
    }); 

});​ 

或使用context option of $.ajax()

$("#someDiv .myClass").each(function() { 
    var ajaxData = "myAjaxData"; 
    $.ajax({ 
     type: "POST", 
     url: "somefile.php", 
     data: ajaxData, 
     context: this, 
     success: function(data) { 
      $(this).removeClass('classBlackFont').addClass('classGreenFont'); 
     } 
    }); 

});​ 
+0

非常感謝你不可寫名:) – Marc 2012-04-24 13:27:21

0

背景:您可以通過關閉了一個變量,確實有正確的值更改,這

喜歡的東西

/** 
* Default ajax 
*/ 
$.ajaxSetup({ 
     type: 'post', 
     dataType: 'json', 
     context: this 
}); 
相關問題