@myaca

Как сделать чтобы js работал в элементе, полученным ajax'ом?

подгружаю в какой-либо div файлик с html разметкой формата .html,
при этом, у меня есть обработчик на кнопку по клику, скажем alert обычный внутри, сделал две одинаковые кнопки, одна находится после div'а, в который прогружается новая страничка, а другая в диве.

Та кнопка, которая находится вне дива, верно вызывает обработчик, а та которая в диве - игнорирует событие.

Получается, что элементы, загруженные аджаксом, не воспринимают так просто обработчики, но почему? Как сделать чтобы они понимали их?
  • Вопрос задан
  • 348 просмотров
Решения вопроса 2
markitantovm
@markitantovm
Художник, музыкант, литературовед
$(document).on('click', '.button', function() {
    console.log('click');
  });
Ответ написан
Stalker_RED
@Stalker_RED
Получается, что элементы, загруженные аджаксом, не воспринимают так просто обработчики, но почему?
Потому что в тот момент, когда вы пытаетесь навешиваете обработчик на кнопку (сразу после загрузки страницы) этой кнопки еще нет.

Как сделать чтобы они понимали их?

Делегирование событий, как и подсказал Максим Маркитантов
$(document).on( // обработчик вешается на сам документ (лучше на родительский элемент)
'click', // слушает все клики
'.button',  // ищет среди них те, что были по элементам с классом .button
function() {
    console.log('click');
  });


Другой вариант: навесить обработчик уже после того как ajax'ом добавили новые кнопки.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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