Pit: onclick auf dynamisch hinzugefügte ID

Beitrag lesen

Hallo Rolf,

du machst das bitte im konkreten Fall NICHT so. Statt eines span füge einen Button hinzu, mit type="submit".

Stimmt, das passt besser.

Wenn #myVan bereits im #formDel Form drin liegt, reicht das schon. Andernfalls musst Du dem Button mit dem form='formDel' Attribut noch sagen, welches Form er submitten soll.

Ja, muß ich dem Button mitteilen...

Andererseits ist das Problem, das Du hier hattest, natürlich durchaus häufig. Die ansynchrone Natur von JavaScript hat schon viele in den Wahnsinn getrieben.

Beruhig mich zwar nur sehr bedingt, aber ok... 😀

Möglichkeit 1: der html() Setter liefert Dir ein Wrapped Set auf den hinzugefügten Span (glaub ich jedenfalls) und damit solltest Du problemlos ein .on('click', ...); hinten anhängen können.

Der Code ist rot, damit jeder, der ihn ggf. kopieren will, sofort sieht dass das für das gewählte Szenario nicht best-practice ist.

$('#myDel').on('click', function() {
      $('#myVan' + ' .myButton')
         .html("<span id='TDel'>Wirklich löschen?<span>")
         .on("click", function() {
            console.log(this.id);
            $("#formDel").submit();
         });
});

Die andere Möglichkeit ist, einfach auf $('myVan') einen Klick-Handler zu legen und ihn dort zu lassen. Die .on() Methode kennt eine Variante mit 3 Parametern, in der der 2. Parameter als Filter dient. Damit kannst Du den Klick-Handler an passender Stelle im DOM verankern, aber nur die Klicks auf die Elemente verarbeiten, die auf deinen Selektor passen.

$('#myDel').on('click', function() {
      $('#myVan .myButton')
         .html("<span id='TDel'>Wirklich löschen?<span>")
});
$('#myVan .myButton').on('click', '#TDel', function() {
   $("#formDel").submit();
});

Mal schauen, ob das bei mir funktioniert. Ich werds mal umsetzen, vielen Dank für Deine Hilfe!

Pit