JQuery.on('change', function() {} не запускается для динамически создаваемых входов

Проблема в том, что у меня есть несколько динамически созданных наборов входных тегов, и у меня также есть функция, которая предназначена для запуска в любое время, когда изменяется входное значение.

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

Однако .on('change') не запускается для любых динамически создаваемых входов, только для элементов, которые присутствовали при загрузке страницы. К сожалению, это оставляет меня в некоторой привязке, поскольку .on означает замену .live() и .delegate(), все из которых являются обертками для .bind():/

У кого-нибудь еще была эта проблема или было известно о решении?

Ответ 1

Вы должны предоставить селектор функции on:

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

В этом случае он будет работать так, как вы ожидали. Кроме того, лучше указать какой-то элемент вместо документа.

Прочтите эту статью для лучшего понимания: http://elijahmanor.com/differences-between-jquery-bind-vs-live-vs-delegate-vs-on/

Ответ 2

Используйте этот

$('body').on('change', '#id', function() {
  // Action goes here.
});

Ответ 3

$("#id").change(function(){
    //does some stuff;
});