Почему вызывается событие click #saveChanges, сразу replaceWith с #updateOrderLine
Я только, только начал разбираться в JS прошу не судить строго.
$('input#updateOrderLine').replaceWith("<input id=saveChanges type=submit value='Сохранить' /input>"); $('#saveChanges').click(saveChangesOrderLine.call(this, true)); function saveChangesOrderLine(update) { var currentOrderLine = { id: 0 }; currentOrderLine.id = $(this).closest('table.detailOrderLine').attr('id').substr(16, 4); Проблема в том, что вызов функции saveChangesOrderLine происходит сразу после замены input'a с помощью replaceWith и this вместо нужного мне элемента #saveChanges становится input#updateOrderLine. P.S. Если что то не понятно объяснил или не досказал, прошу задавать вопросы. |
Не ужели такой сложный вопрос и никто не знает, что делать? Помогите кто нибудь хотя бы предположения в какую сторону "копать".
|
Спасибо всем за помощь. Может кому то еще пригодится.
Проблема состояла в том, что выше указанный код запускался при обработке события click элемента input#updateOrderLine, поэтому this и передавал этот элемент. Решение заключается в том, что нужно вынести биндинг saveChangesOrderLine в основную функцию ready, которая запускается сразу после загрузки DOM. Биндить нужно при помощи функции $('родительский элемент').on('click', '#saveChanges', saveChangesOrderLine), потому что on может забиндить(соединить) новые элементы добавленные на форму с обработчиком, а bind может забиндить только уже существующие элементы на форме. |
Часовой пояс GMT +3, время: 01:08. |