2

我有两个看起来像这样的 ajax 函数:

  $("body").on("click", ".follow", function() {
    var followingId = $(this).data("following");
    var followData = {"following_id" : followingId}
    $(this).addClass('disabled');
    $.ajax({
      url: "/users/follow/",
      type: "POST",
      data: followData,
      dataType: 'json',
      context: this,
      error: function () {},
      success : function (response) {
    $(this).addClass('unfollow');
    $(this).attr('data-unfollow', response.row_id);
    $(this).removeClass('follow');
      }
    });
  });

  $("body").on("click", ".unfollow", function() {
    var unfollowId = $(this).data("unfollow");
    var unfollowData = {"row_id" : unfollowId};
    $(this).addClass('disabled');
    $.ajax({
      url: "/users/unfollow/",
      type: "POST",
      data: unfollowData,
      context: this,
      error: function () {},
      success : function () {
        $(this).removeClass('disabled');
        $(this).addClass('follow');
        $(this).removeClass('unfollow');
      }
    });
  });

当我“关注”一个用户时,我得到“row_id”(比如说 row_id n°1)作为响应并将其设置为取消关注数据。如果我“取消关注”该用户,则 row_id n°1(如果已发送)。这是正常的。

如果我再次尝试关注,我会得到一个新的 row_id(比如说第 2 行)作为响应。这也是正常的。但是如果我想再次取消关注,则会发送 row_id n°1 !我想我应该更新

var unfollowId = $(this).data("unfollow"); 

(在 html 中,值已更改为 row_id n°2),但是当我发布 row_id n°1 时发送。

我能做到这一点吗?

非常感谢 !

4

1 回答 1

2

在第一个函数中,更改:

$(this).attr('data-unfollow', response.row_id);

对此:

$(this).data('unfollow', response.row_id);

仅供参考,您可以使用 jQuery 链接,因此序列如下:

$(this).removeClass('disabled');
$(this).addClass('follow');
$(this).removeClass('unfollow');

可以像这样更有效地完成:

$(this).removeClass('disabled').addClass('follow').removeClass('unfollow');

或者,如果您喜欢它们在单独的行中:

$(this).removeClass('disabled')
    .addClass('follow')
    .removeClass('unfollow');
于 2013-10-14T21:04:30.207 回答