removeEventListener не работает

Я не знаю, что я делаю неправильно, но вот пример того, что я делаю, и это, похоже, не работает.

someDom.addEventListener('mousemove',function(ev) {self.onInputMove(ev)},false); someDom.removeEventListener('mousemove',self.onInputMove); 

Код removeEventListener выполняется, но он просто не удаляет прослушиватель ‘mousemove’

removeEventListener удаляет прослушиватель, который точно соответствует функции, которая была добавлена.

В этом случае функция addEventListener добавлена:

 var some_func = function(ev) { self.onInputMove(ev); }; 

Сохраните ссылку на фактическую функцию, и вы будете хороши. Так, например, следующее должно работать:

 someDom.addEventListener('mousemove',self.onInputMove,false); someDom.removeEventListener('mousemove',self.onInputMove,false); 

onInputMove не является методом обратного вызова. Поэтому вам нужно сделать что-то вроде:

 var event = function(ev) {self.onInputMove(ev)}; someDom.addEventListener('mousemove', event,false); someDom.removeEventListener('mousemove', event, false); 

Зачем делать это так сложно, просто используйте следующее для привязки события к элементу:

 element.onmousemove = function(e) { // Some code here... alert("Mouse moved!"); }; 

Теперь, когда вы хотите удалить событие, просто выполните следующее:

 element.onmousemove = null; 

Готово!

Надеюсь, это поможет вам, ребята!

Эта страница на первом месте по поиску этой / такой проблемы в Google. Поэтому, помимо уже упомянутых ответов, вот еще один интересный факт для будущего:

Оставляя третью необязательную переменную в addEventListener () для useCapture / useBubble (по умолчанию false), создает некоторую проблему при удалении одного и того же eventlistener с тем же именем обратного вызова. Я столкнулся с этой проблемой, работая на хроме. Не могу сказать о других браузерах.

Так что упоминайте третью переменную явно как «ложную».

  • Как получить глобальное / мировое положение дочернего объекта?
  • Создание файла из blob
  • Исправить div, когда браузер прокручивается до
  • Разница между innerText и innerHTML
  • Преобразовать текст camelCaseText в текст предложения
  • Есть ли у JavaScript метод, подобный «range ()» для создания диапазона в пределах предоставленных границ?
  • Какова цель символа плюса перед переменной?
  • Как вернуть накопленные результаты нескольких (параллельных) асинхронных вызовов функций в цикле?
  • Создание hashа из строки в Javascript
  • Подождите 5 секунд перед выполнением следующей строки.
  • Не удалось получить значение свойства margin из результата getComputedStyle
  • Interesting Posts

    Невозможно просматривать веб-сайты с помощью беспроводной сети

    Как исправить черные линии на ЖК-дисплее ноутбука, которые становятся длиннее?

    Есть ли ограничение на прикрепленные элементы панели задач?

    Набор телефонного звонка при щелчке по тексту в андроиде

    Как установить формат экспорта таблицы по умолчанию в Workbench MySQL?

    Назначьте переменную внутри блока переменной переменной вне блока

    Общее ограничение для сопоставления числовых типов

    SimpleXML выбрасывает XmlPullParserException, unterminited entity ref без причины

    Преобразование строкового выражения в Integer Value с использованием C #

    Эквивалент устаревшего события jQuery Toggle

    Добавление второй оси y, связанной с первой осью y

    Как принудительно удалить заблокированный файл, который не имеет блокировки в Windows?

    Преобразование Word в HTML с помощью Apache POI

    Какие свойства CSS наследуются?

    как остановить / отменить андроид CountDownTimer

    Давайте будем гением компьютера.