PassFront
  1. PassFront
  2. База знаний
  3. DOM и браузер

Как называется метод, снимающий событие с узла?

DOM и браузер

Метод, снимающий обработчик события с узла, называется `removeEventListener`. Ему передают тот же тип события и ту же ссылку на функцию, что при добавлении.

removeEventListener

element.removeEventListener('click', handler);

Снимает обработчик, добавленный через addEventListener.

Та же ссылка на функцию

Нужна точно та же ссылка на функцию, что при добавлении:

function handler() {}
element.addEventListener('click', handler);
element.removeEventListener('click', handler); // ✓ работает

// НЕ работает с анонимными/новыми функциями:
element.addEventListener('click', () => {});
element.removeEventListener('click', () => {}); // ✗ другая ссылка

Поэтому для снятия обработчик сохраняют в переменную.

Опции должны совпадать

Если добавляли с capture, снимать тоже с capture:

element.addEventListener('click', handler, { capture: true });
element.removeEventListener('click', handler, { capture: true });

Альтернатива — AbortController

Современный способ снять несколько обработчиков сразу:

const controller = new AbortController();
element.addEventListener('click', handler, { signal: controller.signal });
controller.abort(); // снимает обработчик

once

Обработчик с { once: true } снимается автоматически после первого срабатывания.

Коротко для собеседования

Снимает обработчик removeEventListener('click', handler) — нужна та же ссылка на функцию (анонимные снять нельзя) и совпадающие опции (capture). Обработчик сохраняют в переменную для снятия. Современно — AbortController (signal + abort() снимает несколько сразу); { once: true } снимается автоматически.

Другие вопросы раздела