Моя проблема в том, что $('input[name=isDefault]').length
равен 2
, но каждый из них работает только на один.
$(saveProduct).click(function (e) {
$('input[name=isDefault]').each(function (index) {
var that = this;
console.log(index, 'index');
console.log($('input[name=isDefault]').length);
// do something...
})
})
$('input[name=isDefault]')
динамически добавляет объект во время другой логики.Я знаю, что есть решение, подобное $(upper container).on("event", dynamic obj inside upper container)
- но это приводит к тому, что событие click происходит почти везде, потому что .on
присоединяет событие к big area container
EDIT: Я сделал несколькоизменения для целей тестирования:
var imgs = imgs = $('div[name=fileContainer]');
console.log('before loop', imgs.length); // = 1
for (var i = 0; i < imgs.length; i++) {
console.log('inside loop', imgs.length); // = 1
//do something - imgs is dynamicly added html element by jquery, when I load page there is 1 element with that name
}
, но когда я пишу $('div[name=fileContainer]').length;
в консоли, он равен 2
(конечно, когда я динамически добавил + 1 элемент fileContainer)
РЕДАКТИРОВАТЬ: это не ответ, но я исключил необходимость использовать вышеупомянутый цикл.В другом месте в коде у меня уже есть $(something).on("change", dynamiclyAddedElements function() {})
с другой главной целью ..., но!там я добавляю дополнительную функцию, где я создал javascipt obj с необходимыми данными.Тогда я могу использовать их в click
событии.