从函数内部的ajax中选择$(this)

时间:2018-02-27 11:12:01

标签: jquery ajax

在我的下面的代码中,我循环遍历每个锚链接,获取文本值,将其触发到ajax并获取json响应。一切正常。

但是,在成功的最后阶段,我正在尝试将响应作为一个类添加到我正在使用$(this)

循环的锚点
$( ".field-name-field-staff .field-item a" ).each(function() {
      var username = $(this).text();
      var date = $(this).closest('td.views-field-field-event-date').find('span.date-display-single').text();
      $.ajax({
          type: 'GET',
          url: "bookings/availability/data",
          data: {
              "username": username,
              "date" : date
          },
          success: function (data) {
            console.log(data);
            console.log(data.css);
            console.log(this);
            $(this).addClass(data.css); 
          }
        });
    });

在上面的示例中,在console.logs中,我得到了......

  • 所有数据(作品)的数组
  • 该数组中的单个值(有效)
  • ajax请求对象的完整数组转储(不是锚标记i 想)

有人可以告诉我我是如何走出ajax并将锚点对象移到它外面的吗?

1 个答案:

答案 0 :(得分:2)

ajax中的

$(this)指向ajax成功函数的this。您需要收集this对象以使其指针与父对齐。

这里要实现此尝试

$(".field-name-field-staff .field-item a").each(function() {
  var self = $(this);
  var username = self.text();
  var date = self.closest('td.views-field-field-event-date').find('span.date-display-single').text();
  $.ajax({
    type: 'GET',
    url: "bookings/availability/data",
    data: {
      "username": username,
      "date": date
    },
    success: function(data) {
      console.log(data);
      console.log(data.css);
      console.log(this);
      self.addClass(data.css);
    }
  });
});