Rolf b: $(this).attr('id') was wenn id nicht vorhanden ?

Beitrag lesen

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