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" И у этого элемента нет идентификатора, поэтому вы можете добавить идентификатор, иначе вы получите неопределенное значение в окне предупреждения.