2012-04-24 10 views
2

私はdivを持っています。そのdivの中に私は複数の要素を持っています。いくつかの要素はクラス 'myClass'を持っています。私もボタンがあります。クリックすると、div内のクラスmyClassを持つ各要素に対してforeachループが実行されます。 ajaxCallは各要素に対して送信されます。これらの要素のテキストの色は、デフォルトでは黒です。 ajax呼び出しが成功した場合。クラスclassBlackFontを削除し、1つの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

0

コンテキストを:あなたはが正しい値を持っていることを変数の上に閉じることにより、それを変更することができます何かのようなこの

/** 
* Default ajax 
*/ 
$.ajaxSetup({ 
     type: 'post', 
     dataType: 'json', 
     context: this 
}); 
関連する問題