0

以下は私が取り組んでいるコードです。私の目標は、ユーザーがクラス名「.view_all」のボタンをクリックするたびです。dataajax を使用して返された を使用し、この中に入れたいのですがline $(this).parent('div').siblings('.body_wrap').html(data);、以下のコードを試しましたが、機能しません。

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

 });
4

1 に答える 1

2

thisあなたの問題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
     });

 });

別の方法はcontext、ajax 設定のプロパティを設定することです。

$('.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 
     });
 });
于 2013-10-06T01:56:37.960 に答える