4

我有一个div。在那个 div 里面我有多个元素。某些元素具有类“myClass”。我也有一个按钮。单击时,将为每个在 div 中具有类 myClass 的元素运行一个 foreach 循环。为每个元素发送一个 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');
        }
    });

});​
4

2 回答 2

14

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选项$.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 回答