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

Как скопировать прослушиватели событий с одно элемента на другой без jquery?

Ни cloneNode ни innerHTML не работают
  • Вопрос задан
  • 311 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 2
sergiks
@sergiks Куратор тега JavaScript
♬♬
cloneNode() сработает только если слушатели прописаны прямо в атрибутах элемента <a onclick="alert('Habr')">click me</a>

Слушатели, добавленные элементу через addEventListener() скопировать можно примерно никак.

Так что лучше держать обработчик отдельно, и навешивать их на элементы по мере надобности:
function myClickHandler(event) {
  // что-то сделать по поводу клика
}

element1.addEventListener('click', myClickHandler);
element2.addEventListener('click', myClickHandler);
element3.addEventListener('click', myClickHandler);

Или же слушать события выше по дереву, на общем родителе:
<div id="parent">
  <button>1</button>
  <button>2</button>
  <button>3</button>
</div>
и слушать клики на div#parent
Ответ написан
Комментировать
zkrvndm
@zkrvndm
Архитектор решений
Никак, но можно сделать такой финт ушами... поставить слушатель на новый элемент и транслировать нужные события на старый элемент при помощи dispatchEvent. Минус: каждое событие придется обрабатывать индивидуально.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
05 янв. 2025, в 07:48
2000 руб./за проект
05 янв. 2025, в 06:24
15000 руб./за проект
05 янв. 2025, в 06:22
15000 руб./за проект