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

0

Я пытаюсь прикрепить событие с изменением к вводу, который я вставляю динамически. 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')); })

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

Теги:
event-delegation

3 ответа

0
Лучший ответ
$("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'));
});
  • 0
    это должно быть ближе, но все еще не работает. Есть кое-что, о чем я не задумывался: div, #myDiv, создается внутри модального диалога, заполняемого с помощью ajax, а затем, в случае успеха, div, заполняемого javascript. Так что прикрепление к телу было определенно шагом в правильном направлении. Однако это не сработало.
3

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

  • 0
    исправлено сейчас, спасибо.
0

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню