2010-12-30 6 views
0

heißtDie ID des Elements ändert sich nicht in 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 
         } 
      }); 
    }); 

die ID nach dem Ajax-Request, verändert sich nicht von savenew zu reinigen, aber die html ist völlig in Ordnung, damit ich weiß, die Ajax-Anforderung arbeitet. Was thiunk das Problem ist?

Antwort

2

Sie müssen nur die context speichern (über die context option for $.ajax()) so this bezieht sich noch auf #savenew, wie folgt aus:

$("#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>'); 
    } 
    }); 
}); 

Beachten Sie auch, dass Sie damit die Dinge ein wenig ketten und säubern können.

+0

danke nick !!!! – getaway

+0

@getaway - willkommen :) –

1

$(this) innerhalb success: function(){ bezieht sich nicht auf $('#savenew').

Wie Sie in der Zeile über zu tun, müssen Sie es von ID verweisen:

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

Prost es funktioniert !!! :)) – getaway

+0

@getaway - Während Sie * können * dies tun, ist es weit weniger effizient, warum führen Sie den Selektor zweimal mehr, wenn Sie bereits das Element haben? :) –

+0

Ja, Sie können die Anrufe auf $ verketten ('# save new'). Natürlich ist eine besser wartbare und wiederverwendbare Lösung wie Nick's (Verwendung von Kontext) besser. – cherouvim

Verwandte Themen