如何访问$(this)里面的ajax成功callback函数

看来,我不能访问$(this)里面的jQuery的Ajax成功function。 请参阅下面的代码。

$.ajax({ type: 'post', url: '<?php echo site_url('user/accept_deny_friendship_request')?>', data: 'action='+$action+'&user_id='+$user_id, success: function(response){ //cannot access $(this) here $(this).parent().remove(); } }); 

$(this)应该是什么? 如果你在这个函数之外有一个引用,你可以把它存储到一个variables中。

 $('#someLink').click(function() { var $t = $(this); $.ajax( ... , function() { $t.parent().remove(); }); } 

看看上下文选项 – 完美的作品给我:

 $.ajax({ context: this, type: 'post', url: '<?php echo site_url('user/accept_deny_friendship_request')?>', data: 'action='+$action+'&user_id='+$user_id, success: function(response){ //can access this now! } }); 

尝试调用$.proxy ,在函数内部改变这个范围:

 $.ajax({ success: $.proxy(function(response) { $(this).parent().bla(); }, $(this)); }); 

如果你想在ajax调用的上下文中做到this ,你也可以使用.bind() ,如下所示:

 $.ajax({ url: 'some_url' success: function(data) { // do something 'this' }.bind(this) }) 

它将成功callback中的this值绑定到this外部。

我看不到$(this)引用任何东西,但更简单的方法是给这个元素一个类或ID和从jQuery引用:

代替:

 $(this).parent().remove(); 

你可以这样做:

 $('#element_id').parent().remove(); 

注意:这里我假设你正在处理一个元素/迭代。