2017-07-03 3 views
1

sollte ich jQuery auch auf die Schaltfläche klicken haben:Neu hinzugefügte Taste, nachdem Ajax-Anforderung nicht Ereignis ausgeführt, dass er

$('button.btn').on('click', function(form) 

Probe nach Laden der Seite exising Taste:

<button id="5" class="yellow-button btn">Odpublicznij</button>

funktioniert perfekt zu allen Tasten mit Klasse btn

Aber dann onclick nach Ajax Anfrage fügt neue Schaltfläche zu HTML

content += '<button id="' + comments[i].id + '" class="green-button btn">Upublicznij</button>';

Es fügt neue Schaltfläche wie:

<button id="11" class="yellow-button btn">Odpublicznij</button>

Und diese neue Schaltfläche, um diese auch $('button.btn').on('click', function(form) nicht ausgeführt.

Und ich brauche es dieses Ereignis zu haben, nicht nur hier als Schaltfläche sein, die nichts tun

+0

Weil Sie erwarten, dass der Code das Element findet, bevor es existiert. Es ist wie jemand, der deinen Namen ruft, bevor du den Raum betrittst. Du wirst es nicht hören. – epascarello

Antwort

2

Das Problem tritt auf, weil das neue Element, das man einfach nicht, dass Click-Handler angehängt hat angebracht zu ihm. Inorder dies zu beheben, müssen Sie wie Ihre Wähler ändern

$('body').on('click', 'button.btn', function(form) { 
    //code goes here 
}); 

Was wir hier tun Event Delegation genannt wird.

Verwandte Themen