2011-01-04 10 views
0

私は、その中のボタンがクリックされた後、私のdivをフェードアウトさせたいので、その結果の投稿要求は成功します。JQUERY成功後にどのようにフェードアウトしますか?

$('.btn').click(function(){ 
      var u_id = $(this).attr('id'); 
      $.post("actdeact.php",{do_action:'activate',uid:u_id},function(data){ 
       $(this).fadeOut("500"); 
       alert('loaded '+data); 
      }); 
     }); 

divが動的に生成されたため、私はid(またはeach())の代わりにクラスを使用しました。しかし、私はフェードアウト.....任意のアイデアのためにこれを使用することはできないようですか?

+0

** EDIT:**私の答えを削除しました。実際の回答については、[this one](http://stackoverflow.com/questions/4595792/jquery-how-do-i-fadeout-on-post-success/4595869#4595869)を参照してください。 –

答えて

-1

はこれを試してみてください:

$('.btn').click(function(){ 
      var that=$(this); 
      var u_id = $(this).attr('id'); 
      $.post("actdeact.php",{do_action:'activate',uid:u_id},function(data){ 
       that.fadeOut("500"); 
       alert('loaded '+data); 
      }); 
     }); 

アイデアは、呼び出す前に$(この)への参照を取得することです$ .post

+0

はスコープの問題のように見えますが、ポストコールバック関数内で$(this)を呼び出すときにセレクタのスコープ内にいなくなった場合は、ポストコールバック関数のスコープの内側にあります。 .btn要素。 上記のようにするとこれを修正する必要があります。 私の説明は意味をなさないことを願っています。 –

+0

@Alex Vidalあなたの声明は真実ではありません。 'that'は関数内で宣言され、clickイベントが関連付けられているボタンへの参照を保持します。 – jny

+0

あなたは間違いありません。私のコメントと私の答えを削除する。 –

関連する問題