jquery copy element



Jquery клик по элементу

Автор Александр Опарин задал вопрос в разделе Другие языки и технологии

jQuery - события не ловятся после добавления новых элементов. Что происходит? Как исправить? и получил лучший ответ

Ответ от Ёергей Одиноков[гуру]
Напишите вместо $('#cats li a').click(callback) строку $(document).on('click', '#cats li a', callback) и все будет работать.
В данном случае мы добавляем обработчик не к каждому элементу категории, а ко всему документу. Событие, вызванное в ссылке, будет подниматься наверх, вначале к элементу li, потом к #cats, потом его родителю и т. д. до документа, это называется event bubbling. Однако свойство target у события будет неизменно содержать ссылку на элемент, в котором оно возникло.
Указанная функция добавляет специфический обработчик к документу, в котором будет производиться дополнительная проверка. И, если event.target будет попадать под селектор '#cats li a', то будет вызван ассоциированный с этим callback (который мы указали при добавлении обработчика) . Такой метод, в котором обработчик вешается на родительский, а не исходный элемент, называется делегированием событий (event delegation).
Чтобы не загромождать документ ненужными обработчиками, можно добавить обработчик к элементу 'cats':
$('#cats').on('click', 'li a', callback). Механизмы будут теми же.
Пример: ссылка
Александр Опарин
Профи
(720)
Всё, нашёл!.. Простите, что побеспокоил.

Ответ от Коля Тапочкин[гуру]
дело в том что события вешаются сразу после загрузки страницы и больше не обновляются. Вновьсозданные элементы нужно ручками добавлять к обработчикам событий

Ответ от Анатолий Хачеёбов[активный]
А потому что jQuery не знает об этих новых объектах. Придётся пройтись по добавляемому дереву, и всем, кому требуется, сделать bind('событие', обработчик) ;

Ответ от 22 ответа[гуру]
Привет! Вот подборка тем с похожими вопросами и ответами на Ваш вопрос: jQuery - события не ловятся после добавления новых элементов. Что происходит? Как исправить?
 

Ответить на вопрос:

Имя*

E-mail:*

Текст ответа:*
Проверочный код(введите 22):*