У меня есть элементы внутри DOM, которые содержат атрибут, называемый «data-event».Как связать динамически именованные события с динамическими элементами с помощью jQuery
Возможно, некоторые из этих элементов динамически добавляются в DOM, например, после запроса ajax.
Я доступ к атрибуту данных событий элемента с JQuery этим путем, конечно:
$('.element-selector').data('event')
атрибута данных событий содержит имя события, к которому должен быть присоединен обработчик функции. Скажем, эта функция называется generalHandler().
Я не могу использовать функцию .on напрямую, потому что я не знаю имя события, к которому присоединяется функция до тех пор, пока я не получу доступ к самому элементу, и .on требуется имя события, которое будет указано первым (конечно).
Я мог бы использовать .each для того, чтобы получить доступ к каждому $ («[данных событие]») и извлечь имя события и прикрепить функцию к нему, все внутри функции обратного вызова вызывается .each ,
Использование .each, во всяком случае, также не является хорошим решением, поэтому я не обрабатываю все динамически добавленные элементы $ ('[data-event]').
Я мог бы использовать элемент вставленного элемента DOM, прикрепляя его к телу и ожидая добавления [данных-событий] элементов в DOM, но я знаю, что эти события устарели. Я мог бы расширить объект MutationObserver, но я ничего не знаю о кодировании производительности.
Я хотел бы знать, есть ли способ сделать то, что мне нужно, используя только одну команду/функцию, возможно, используя .on в некотором «магическом» способе или что-то подобное. Я не хотел бы использовать MutationObserver, потому что я должен дважды выполнять операцию привязки к событию (один для существующих элементов и другой для динамических), я не уверен, как использовать его, сохраняя оптимальную производительность страницы и я не знаю точно, как правильно реализовать его, чтобы сделать только и только то, что мне нужно (найти имя события и приложить к нему обработчик для THAT-элемента).
Любая идея? Спасибо.
Это прекрасно работает. Это именно то, что я искал. Большое вам спасибо, да, конечно, вы поняли. Я сделал вилку вашей скрипки: https://jsfiddle.net/edotmx90/ Я сделал эти изменения: я привязал метод .on к
, поэтому мне не нужно иметь «контейнер», и я использовал «[data- event] 'в качестве селектора целевых элементов для .on, чтобы не было необходимости в выборе класса .child. Кроме того, я подтвердил, что я могу прикреплять другие обработчики к элементам, чтобы перезаписать «общий», который я прикрепляю к событию данных. Идеально! Спасибо. –Извините, правильная скрипка: https://jsfiddle.net/c2onx7bo/ –