Du musst unterscheiden zwischen this und $(this). In deinem click-Handler ist der Kontext (was in this steht) das geklickte DOM-Element. Also der Button. $(this) ist der Aufruf der jQuery-Funktion mit this als Parameter, was ein matched set mit diesem DOM-Element als Inhalt erzeugt. Wenn Du im click-Handler schreibst
var $name = $(this);
dann ist das nicht falsch, aber Du merkst Dir damit nicht den Inhalt von this, sondern ein matched set mit dem angegebenen DOM-Element als Inhalt.
Um den Button im Ajax-Replyhandler zu disablen, kannst Du dieses matched set nutzen, du schreibst:
$name.prop('disable', true); // und nicht: $name.attr('disable', 'disable');
Beachte prop statt attr - hier steht's begründet (suche nach disabled).
Sich zu diesem Zweck ein matched set zu merken, oder jQuery zu verwenden, ist aber eigentlich eine Spatzenkanone. Form-Elemente haben ein disabled-Property, das du auf true oder false setzen kannst. Deshalb reicht es, im click-Handler eine Variable clickedButton = this
zu setzen und im Ajax-Replyhandler schreibst dann nur noch clickedButton.disabled = true
.
Rolf