175 votes

jQuery .on('change', function() {} ne se déclenche pas pour les entrées créées dynamiquement

Le problème est que j'ai des ensembles de balises d'entrée créés dynamiquement et j'ai également une fonction qui est censée se déclencher chaque fois qu'une valeur d'entrée est modifiée.

$('input').on('change', function() {
  // Does some stuff and logs the event to the console
});

Cependant, le .on('change') ne se déclenche pas pour les entrées créées dynamiquement, mais seulement pour les éléments qui étaient présents lorsque la page a été chargée. Malheureusement, cela me met dans une situation difficile, car .on est censé remplacer .live() et .delegate(), qui sont tous des wrappers pour .bind() :/.

Quelqu'un d'autre a-t-il rencontré ce problème ou connaît-il une solution ?

313voto

Artem Vyshniakov Points 9170

Vous devez fournir un sélecteur à on fonction :

$(document).on('change', 'input', function() {
  // Does some stuff and logs the event to the console
});

Dans ce cas, cela fonctionnera comme prévu. Et il est préférable de spécifier un élément au lieu du document.

Lisez cet article pour mieux comprendre : http://www.elijahmanor.com/2012/02/differences-between-jquery-bind-vs-live.html

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X