如何访问$(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();
注意:这里我假设你正在处理一个元素/迭代。