Задать вопрос
@Makito

Есть ли аналог jQuery.on для плагинов?

С помощью .on в jQuery можно навесить обработчик не на сам элемент а делегировать обработчик его родителю, в таком случае после добавления подходящего элемента динамически, он сразу получает этот обработчик.

Есть ли подобные способы для привязки плагинов?

Сейчас каждый раз после добавления нового элемента прямо указываю что на него нужно навесить какой нибудь плагин, например фэнсибокс, но это не удобно, в том случае если у нас идет активная динамика на клиенте.
  • Вопрос задан
  • 3928 просмотров
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 4
@alvik48
Frontend & Node.js developer
Не знаю универсального способа для всех плагинов, но в случае с тем же Fancybox можно сделать что-то подобное, чтобы не перенавешивать его каждый раз (в примере открываем попап при клике на ссылки с классом jsFancybox):

$('body').on('click', '.jsFancybox', function(e) {
    e.preventDefault();
    var href = $(this).attr('href');
    $.fancybox.open({
         href: href
    });
});
Ответ написан
Комментировать
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Ну начнем с того что обработчик события крепится не к самому элементу, который вы добавляете, а к контейнеру, на который навешивается делегат. А уже если событие нужного вам типа всплыло и вызвал его элемент подпадающий под селектор, то вызывается ваш обработчик.

По поводу плагинов — увы только так, навесить на тот же контейнер делегат о том что бы добавлен элемент, и при добавлении оного вызывать триггером у него ваше событие, в обработчике же навешивать плагин на элемент.
Ответ написан
@egorinsk
Не проще ли сделать единственную функцию вроде attachPlugins(node) и вызывать ее при добавлении контента? Пфф, одна строчка всего лишь.
Ответ написан
k12th
@k12th
console.log(`You're pulling my leg, right?`);
Есть MutationObserver. Но в слушателе все равно придется тупо навешивать плагины (хоть это и можно автоматизировать).
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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