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



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



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


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

кто-нибудь имел эту проблему или знает решение?

401   5  

5 ответов:

вы должны предоставить селектор 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/

использовать

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

вы можете применить один подход:

$("#Input_Id").change(function(){   // 1st
    // do your code here
    // When your element is already rendered
});


$("#Input_Id").on('change', function(){    // 2nd (A)
    // do your code here
    // It will specifically called on change of your element
});

$("body").on('change', '#Input_Id', function(){    // 2nd (B)
    // do your code here
    // It will filter the element "Input_Id" from the "body" and apply "onChange effect" on it
});
$("#id").change(function(){
    //does some stuff;
});

просто чтобы прояснить некоторые нестыковки. Это работает только тогда, когда элемент присутствует на нагрузке DOM:

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

когда элемент динамически загружается позже, вы можете использовать:

$(".parent-element").on('change', '#target', function(){
   //does some stuff;
});

Comments

    Ничего не найдено.