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

时间:2012-04-24 13:22:43

标签: jquery ajax

我有一个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');
        }
    });

});​

2 个答案:

答案 0 :(得分: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');
        }
    });

});​

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

});​

答案 1 :(得分:0)

上下文:这个

喜欢什么

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