2015-09-09 2 views
0

У меня есть следующие поля ввода:Обнаружение новых элементов DOM для использования в .each()

subGroupInputs = $("td[data-field_name='sub_group'] input"); 

Пользователь может добавлять новые входы динамически.

$(subGroupInputs).each(function(input) { 
    $(this).on("keyup", function(){ 
     console.log($(this).val()); 
    }); 
}); 

Мне нужно получить все значения, даже значения из динамически добавляются те, но я не могу получить subGroupInputs обновить.

Я попытался ниже, но это также не работает:

 function setVariables(){ 
      subGroupInputs = $("td[data-field_name='sub_group'] input"); 
     } 

     //Initial Variables on Page Load 
     setVariables(); 

     //Set Variables Again after new elements are added. 
     $('.my-button').on("click", function(){ 
      setVariables(); 
     }); 
+0

Нет, это не работает, он имеет тот же эффект. –

ответ

2

Попробуйте делегировать попытку поставить id в $ ('table'), если у вас несколько таблиц.

$("table").on('keyup', "td[data-field_name='sub_group'] input", function(){ 
    console.log($(this).val()); 
}); 

Идея здесь таблица становится все хиты событий, которые на самом деле событие распространяется от 'td[data-field_name='sub_group'] input'

+0

Привет, спасибо, что это работает отлично и встроено в новейший jQuery. –

3

вы должны попробовать с delegate вместо на, если вы хотите связать с пока еще не добавлены объекты в JQuery

+0

Привет, спасибо, что это работало, но я собираюсь с ответом @ joyBlanks, потому что в документации указано следующее: «Что касается jQuery 1.7, .delegate() был заменен методом .on()». –

Смежные вопросы