4

私は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');
        }
    });

});​
4

2 に答える 2

14

thisajax コールバックで自動的に適切なオブジェクトへの参照になるわけではありません。正しい値を持つ変数を閉じることで、これを変更できます。

$("#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オプションを$.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');
        }
    });

});​
于 2012-04-24T13:23:57.233 に答える
0

コンテキスト:これ

何かのように

/**
* Default ajax
*/
$.ajaxSetup({
        type: 'post',
        dataType: 'json',
        context: this
});
于 2014-12-26T13:38:30.863 に答える