JQUERY AJAX - 在成功的情况下改变$(this)的类

Mar*_*arc 4 ajax jquery

我有一个div.在那个div中我有多个元素.有些元素有'myClass'类.我也有一个按钮.单击时,将为div中具有类myClass的每个元素运行foreach循环.为每个元素发送ajaxCall.默认情况下,这些元素的文本颜色为黑色.如果ajax调用成功.我想删除class 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');
        }
    });

});?
Run Code Online (Sandbox Code Playgroud)

Mat*_*all 13

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

});?
Run Code Online (Sandbox Code Playgroud)

或者使用以下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');
        }
    });

});?
Run Code Online (Sandbox Code Playgroud)