События динамично созданных кнопок
Добрый день, друзья!
Столкнулся с проблемой: события для динамично созданных объектов не работают //info = [id, start, finish, time, distance, price]; //динамически создаю объекты function echo(info) { var i = 0; var Form = document.getElementById('fms'); var Div = document.createElement('div'); Div.id = 'main'; Form.appendChild(Div); var id = info[info.length-1]; while (info.length > 0 ){ i++; var field = info.pop(); var Inner = document.createElement('input'); Inner.id = 'elem'+id+i; Inner.name = 'elem'+id; Inner.size = field.length; Inner.value = field; Div.appendChild(Inner); } var DeleteLink = document.createElement('input'); DeleteLink.type = 'button'; DeleteLink.value = 'Готово'; DeleteLink.id = 'DelBut'; DeleteLink.name = id; Div.appendChild(DeleteLink); } События нужны по нажатию на кнопке с id='DelBut' при этом нужно получать значение из текущей нажатой кнопки, например name //не работает var elt = document.getElementById("DelBut"); elt.onclick = function() { console.log(this.name); } //не работает $("#DelBut").click(function () { console.log('jr'); console.log($(this).text()); }); |
Цитата:
Решение: - навешивать события при создании - использовать делегирование событий |
Цитата:
Спасибо |
Используй метод .on() вместо .click(). (делегирование)
Либо создай какую нибудь универсальную функцию, которая навешивает твой обработчик на вновь создаваемые элементы |
Цитата:
http://api.jquery.com/on/ |
Спасибо, получилось повесить событие при создании элемента
DeleteLink.onclick = function (){//выполняемые действия}; Отличный форум, очень помогаете, ребята! |
быстрее клонировать элементы и лучше использовать fragment
а обработчик можно навесить на существующий родитель небольшой пример http://jsfiddle.net/vlasenkofedor/hyQnb/ |
Часовой пояс GMT +3, время: 21:55. |