Jquery 在函数之外使用返回数据

Jquery 在函数之外使用返回数据,jquery,ajax,function,Jquery,Ajax,Function,下面是我正在使用的代码,我的目标是每当用户单击带有类名“.view\u all”的按钮时。我想使用使用ajax返回的数据,并将其放在行$(this).parent('div').sides('body_wrap').html(数据)中我尝试了下面的代码,但它不起作用 $('.view_all').click(function (event) { $.ajax({ type: 'POST', url: 'ajax/return_data.php'

下面是我正在使用的代码,我的目标是每当用户单击带有类名“.view\u all”的按钮时。我想使用使用ajax返回的
数据
,并将其放在
行$(this).parent('div').sides('body_wrap').html(数据)中我尝试了下面的代码,但它不起作用

$('.view_all').click(function (event) {
     $.ajax({
         type: 'POST',
         url: 'ajax/return_data.php'
     }).success(function (data) {
         $(this).parent('div').siblings('.body_wrap').html(data);
     });

 });

this
是您的问题,
ajax成功回调中的
不像您所想的那样是DOM元素,而是jqXHR对象。有很多方法可以解决这个问题,最简单的方法就是在外部缓存
$(this)
,并在回调中使用它。尝试:

$('.view_all').click(function (event) {
    var $this = $(this); //Cache it here
     $.ajax({
         type: 'POST',
         url: 'ajax/return_data.php'
     }).success(function (data) {
          $this.parent('div').siblings('.body_wrap').html(data); //use it
     });

 });
另一种方法是设置ajax设置的
context
属性

$('.view_all').click(function (event) {
     $.ajax({
         context:this, //set up context
         type: 'POST',
         url: 'ajax/return_data.php'
     }).success(function (data) {
          $(this).parent('div').siblings('.body_wrap').html(data); //Now 
     });
 });

您的问题标题可能重复,且内容冲突……请注意,v1.8中不推荐使用
.success()
:现在推荐使用
.done()
。@user2310422下面提到的解决方案对您有效吗?