jQuery делегирование событий для ввода текста при изменении

Я пытаюсь прикрепить событие изменения к входу, который я вставляю динамически. HMTL начинается так:

<div id="myDiv"></div>

Затем вставьте в него HTML-код, когда страница активна (она загружается через ajax, поэтому вместо onReady используется функция успеха):

$("#myDiv").html('<table><tr><td><input type="text" class="myInput"></td></tr></table>');

для того, чтобы прикрепить обработчик события onChange к этому, у меня есть следующая привязка события делегирования события в onReady документа:

$("#myDiv").on('change', 'input.myInput', function(){ alert($(this).attr('id')); })

Есть ли что-то, что я делаю неправильно, событие никогда не срабатывает.

3 ответа

Решение
$("body").on('change', '.myinput', function(){ alert($(this).attr('id')); });

Попробуйте это: http://jsfiddle.net/h7wyS/. Получите ваше изменение ввода.. не ваше изменение 'div'.

$("#myDiv").html('<table><tr><td><input type="text" class="myInput"> </td></tr></table>');

// added the 'blur' too.
$("#myDiv .myInput").on('change, blur', function(e){ 
    alert($(this).parents('div:first').attr('id'));
});

Javascript чувствителен к регистру, ваше имя класса myinput, но ты слушаешь myInput, измените одно или другое.

Несколько мыслей, чтобы заметить, что вы используете верблюжий случай во второй строке, который на самом деле должен быть "myinput" И у этого элемента нет идентификатора, поэтому вы можете добавить идентификатор, иначе вы получите неопределенное значение в окне предупреждения.

Другие вопросы по тегам