Как навесить событие на элемент если он выводиться динамически?

Как навесить событие на элемент, который выводиться динамически не загрязняя код функции вывода. То есть как проверить вывела функция элементы или нет ?
К примеру функция и событие
getMessages();

$('#listClients button').click(function(){
        event.preventDefault();
        console.log('1');
    });
  • Вопрос задан
  • 173 просмотра
Решения вопроса 2
alexey-m-ukolov
@alexey-m-ukolov Куратор тега JavaScript
Если элемент #listClients у вас является родителем, в который вставляются новые элементы, то нужно делать так:

$('#listClients').on(
    'click',
    'button',
    function(){
        event.preventDefault();
        console.log('1');
    }
);


Это называется делегированием событий - вы вешаете обработчик на #listClients, который со страницы не исчезает и при каждом клике внутри себя он проверяет не был ли клик в действительности на button и если так - выполняет обработчик в нужном контексте.

Пример.
Ответ написан
Комментировать
@kirill-93
В современных версия jquery так, как сказал Алексей Уколов , в старых $('#listClients button').live('click', function(){})
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы