参考post()调用的done()块中的触发对象?

时间:2017-11-14 14:11:19

标签: javascript jquery ajax

我有一个post()调用绑定到一组图像的click()方法。

post()调用中,我可以引用jQuery(this),然后可以访问原始对象。 (例如数据参数,或更改其状态):

jQuery('.vote .magic_button').click(function() {
  jQuery.post(url, {
      action: 'ajax_vote',
      'vote_target': jQuery(this).data('postid')
    })
    .done(function(data) {
      // $img = jQuery(this).find('img');         
    })
});

当AJAX调用返回时,在验证响应后,我想引用最初单击的图像,但在这个新上下文中不再是this

如何在不必将信息传递回data参数内的情况下访问它?

1 个答案:

答案 0 :(得分:1)

您可以使用var that = this解决方法或只使用ES5 .bind函数正确设置this

jQuery('.vote .magic_button').click(function() {
  jQuery.post(url, {
      action: 'ajax_vote',
      'vote_target': jQuery(this).data('postid')
    })
    .done(function(data) {
      // $img = jQuery(this).find('img');         
    }.bind(this))
});

Documentation