添加成功课程

时间:2014-09-16 21:09:57

标签: jquery ajax

我想在POST成功后点击的元素上添加一个类。由于某种原因,既没有“这个”也没有“'add_favorite',这个”正在添加“收藏”。其他一切都很好。

有什么想法吗?

 $('.add_favorite').click(function(){
    expert_id = $(this).attr('data-expert-id');
    user_id = $(document.body).attr('data-user-id');

    //console.log(user_id);

    var data = {
        'expert_id' : expert_id,
        'user_id' : user_id
    }

    var url = "/submit-fav.php";

    $.ajax({
        type: "POST",
        url: url,
        data: data,
        success: function(data)
        {
            $(this).addClass('favorited');
        }
    });

    return false;
 });

1 个答案:

答案 0 :(得分:2)

你需要保留原文的本地副本"这个"为了从成功回调的范围内访问它(它有一个不同的"这个")。

 $('.add_favorite').click(function(){
    var  $add_favorite = $(this);
    var expert_id = $add_favorite.attr('data-expert-id');
    var user_id = $(document.body).attr('data-user-id');

    //console.log(user_id);

    var data = {
        'expert_id' : expert_id,
        'user_id' : user_id
    }

    var url = "/submit-fav.php";

    $.ajax({
        type: "POST",
        url: url,
        data: data,
        success: function(data)
        {
            $add_favorite.addClass('favorited');
        }
    });

    return false;
 });

注意:

  • 我倾向于使用$
  • 为jQuery对象变量添加前缀
  • 您应该使用var声明所有局部变量,或者修改/污染全局命名空间。