Не работает .off
Пример: http://jsfiddle.net/tamtakoe/8fbAH/3/
Суть в том, чтобы обработчик оставался только в последнем добавленном элементе, а из предыдущих удалялся бы. Почему-то .off ничего не удаляет в любых комбинациях |
var additem = function () { var $item = $('<div><input type="text"></div>') $('#cont').find('input').off( 'keyup.additem') $item.appendTo('#cont') $item.find('input').last().on( 'keyup.additem', function(e){ additem() }) } additem() так? |
Работает! Спасибо! А зачем используется .last()? Без него тоже работает.
|
|
Немного знаю) А вы уберите ласт из своего кода и посмотрите что изменится. Я отличий не нашел...
|
Shitbox2,
+1 за внимательность, если это внимательность ;) Действительно last не нужен, т.к. событие вешаем конкретно на $item, точнее на input в нем. |
Кстати, первый раз вешал обработчик на весь контейнер, но получается странный эффект:
$('cont').on( 'keyup', 'div:last-child input', function) //работает $('cont').on( 'keyup', 'div:eq(-1) input', function) //не работает (а в моем случае понадобится :eq(-2)) Решили на другом форуме, что это баг JQ. Или этому есть объяснение? |
Shitbox2,
оба варианта работают, если обращаться $('#cont') |
Опечатался, пока писал сюда. Пример из жизни: http://jsfiddle.net/tuJnv/8/
Меняем last-child на eq(-...) и не пашет (на вновь созданных элементах) |
Чуть упростил пример http://jsfiddle.net/tamtakoe/tuJnv/10/
|
Часовой пояс GMT +3, время: 05:25. |