2010-12-30 17 views
0

すなわち要素のidはjqueryで変更されませんか?

$("#savenew").live('click', function(e) { 
       var user=<?php echo $user?>; 
       $.ajax({ 
       type: "POST", 
       url: "actions/sub.php", 
       data:{user: user} , 
       success: function(){ 
        $('#savenew').html('<span>Unsubscribe</span>'); 
    $(this).attr('id', 'clean'); // this my problem my problem 
         } 
      }); 
    }); 

ID AJAX要求した後、きれいにsavenewから変更されていませんが、HTMLは完全に罰金ですので、私は、AJAXリクエストが動作している知っています。問題は何ですか?

答えて

2

あなただけ(context option for $.ajax()経由)contextを保存する必要があるので、thisはまだこのように、#savenewを指し:

$("#savenew").live('click', function(e) { 
    var user=<?php echo $user?>; 
    $.ajax({ 
    context: this, //add this! 
    type: "POST", 
    url: "actions/sub.php", 
    data:{user: user} , 
    success: function(){ 
     $(this).attr('id', 'clean').html('<span>Unsubscribe</span>'); 
    } 
    }); 
}); 

これにより、物事をちょっとつなぎ、清掃することができます。

+0

thanks nick !!!! – getaway

+0

@getaway - ようこそ:) –

1

$(this)内側success: function(){$('#savenew')を参照していません。

あなたは上記の行では、あなたがidでそれを参照する必要がありそうであるように:

$('#savenew').attr('id', 'clean'); 
+0

これはうまくいきます! :)) – getaway

+0

@getaway - これを行うことはできますが、それははるかに効率が悪いです。 :) –

+0

はい、コールを$( '#savenew')にチェーンすることができます。もちろん、Nick(コンテキストの使用)のような、より保守的で再利用可能なソリューションが優れています。 – cherouvim

関連する問題