Comment implémenter une fonction de touche avec un élément de création dynamique avec JQuery?

Je ne peux pas comprendre pourquoi le code suivant ne fonctionne pas. JSFIDDLE LINK

$(document).ready(function () { addInput(); }); var limit = 30; function addInput() { var numberOfRows = $("#shipping tr").size(); var id = numberOfRows; if (numberOfRows == limit) { alert("You have reached the limit of adding " + limit + " inputs"); } else { $('#shipping').append('<tr id="rate' + id + '"></tr>'); $('tr#rate' + id).append('<td></td>'); $('tr#rate' + id).append('<td><input type="text" name="rate" /></td>'); } $('input[name=rate]').on('keyup', 'input', function () { alert('YAY'); return false; }); } 

J'essaie d'attribuer une fonction de keyup aux entrées que j'ajoute dynamiquement.

Production attendue: YAY! Dans une boîte contextuelle

Aidez-nous!

Joignez un gestionnaire d'événements de clés à la table d'expédition, et l'évènement passe de l' input[name="rate"] à la table d'expédition:

 $('#shipping').on('keyup', 'input[name="rate"]', function () { alert('YAY'); return false; }); 

DEMO

Vous devez ajouter une délégation au document car elle est ajoutée au document .

Exemple

 $(document).on('keyup', 'input[name="rate"]', function () { alert('YAY '); }); 

Working Demo