Событие.on jquery в нативном javascript?

Постепенно отказываюсь от использования jQuery, и теперь столкнулся с тем, что в jquery можно поставить обработчик на опр. класс с помощью события .on(), и он сработает даже на загруженных с помощью ajax элементах.
Вот у меня вопрос, как в javascript поставить обработчик так, что бы он работал и на добавленных | загруженных ajax'ом html данных. можно ли это сделать с помощью querySelector?
  • Вопрос задан
  • 4524 просмотра
Решения вопроса 2
dhs
@dhs
Web-разработчик
document.addEventListener('click', function (event) {
    var selectors = document.querySelectorAll('____СЕЛЕКТОР____'),
        element = event.target,
        index = -1;

    if (selectors) {

        while (element && ((index = Array.prototype.indexOf.call(selectors, element)) === -1)) {
            element = element.parentElement;
        }

        if (index > -1) {
            (function () {
                //РЕЗУЛЬТАТ СЮДА
            }).call(element, event);
        }
    }
});
Ответ написан
Комментировать
@hedint
Web разработчик
Возможно, я отстал от жизни, но jQuery.on никогда не работал по умолчанию на элементах, загруженных после навешивания события (подгружаемых через ajax, например).
Чтобы работало, нужно было сделать что-то вроде
$(document).on('click', element, callback) - т.е. навесить событие на родительский элемент.
Думаю, точно так же можно сделать и в ванильном js - навесить событие на родительский элемент, в обработчике фильтровать по элементу, на котором фактически сработало событие:
вот примерное решение, но я обычно использую для такого jQuery - возможно, это можно было бы записать лучше/проще jsfiddle.net/027qg2a3/1
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
aerohorn
@aerohorn
Учусь фронтендить
.on() это аналог .addEventListener в JavaScript.
Используйте его
Ответ написан
keksmen
@keksmen
Just a programmer
Слышали про .delegate()?
codepen.io/anon/pen/PwmqMm
Ответ написан
@bioforge
Верстающий пыхер
Подобной нативной функцией нет.
Тут писать самостоятельно или выдрать откуда-нибудь, например из того же jquery.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы