Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.07.2013, 11:41
Новичок на форуме
Отправить личное сообщение для Алимпаша Посмотреть профиль Найти все сообщения от Алимпаша
 
Регистрация: 27.02.2009
Сообщений: 4

Почему вызывается событие 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. Если что то не понятно объяснил или не досказал, прошу задавать вопросы.

Последний раз редактировалось Алимпаша, 14.07.2013 в 14:30.
Ответить с цитированием
  #2 (permalink)  
Старый 14.07.2013, 14:33
Новичок на форуме
Отправить личное сообщение для Алимпаша Посмотреть профиль Найти все сообщения от Алимпаша
 
Регистрация: 27.02.2009
Сообщений: 4

Не ужели такой сложный вопрос и никто не знает, что делать? Помогите кто нибудь хотя бы предположения в какую сторону "копать".
Ответить с цитированием
  #3 (permalink)  
Старый 15.07.2013, 09:39
Новичок на форуме
Отправить личное сообщение для Алимпаша Посмотреть профиль Найти все сообщения от Алимпаша
 
Регистрация: 27.02.2009
Сообщений: 4

Спасибо всем за помощь. Может кому то еще пригодится.
Проблема состояла в том, что выше указанный код запускался при обработке события click элемента input#updateOrderLine, поэтому this и передавал этот элемент. Решение заключается в том, что нужно вынести биндинг saveChangesOrderLine в основную функцию ready, которая запускается сразу после загрузки DOM. Биндить нужно при помощи функции $('родительский элемент').on('click', '#saveChanges', saveChangesOrderLine), потому что on может забиндить(соединить) новые элементы добавленные на форму с обработчиком, а bind может забиндить только уже существующие элементы на форме.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему вызывается событие click #saveChanges, сразу после замены с #updateOrderLine Алимпаша Events/DOM/Window 1 15.07.2013 08:07
Событие click вызывается несколько раз. Почему? rusbody jQuery 22 21.08.2012 15:17
Обработчик click вызывается несколько раз или не всегда вызывается OlegJquery jQuery 2 21.07.2011 19:37