Я пытаюсь удалить слушателя события внутри определения слушателя:
canvas.addEventListener('click', function(event) {
click++;
if(click == 50) {
// remove this event listener here!
}
// More code here ...
Как я мог это сделать? это = событие ... Спасибо.
if(click == 50) {
должно бытьif( click === 50 )
илиif( click >= 50 )
- они не изменят вывод, но по соображениям здравого смысла эти проверки имеют больше смысла.Ответы:
Вам нужно использовать именованные функции.
Кроме того,
click
переменная должна быть вне обработчика для приращения.РЕДАКТИРОВАТЬ: Вы можете закрыть вокруг
click_counter
переменной, как это:Таким образом, вы можете увеличить счетчик по нескольким элементам.
Если вы этого не хотите и хотите, чтобы у каждого был свой счетчик, сделайте следующее:
РЕДАКТИРОВАТЬ: я забыл назвать имя обработчика, возвращаемого в последних двух версиях. Исправлена.
источник
myClick = function(event){...}
считаться именованной функцией тоже?Должен сделать это.
источник
arguments.callee
для заинтересованных сторон: developer.mozilla.org/en/JavaScript/Reference/…arguments.callee()
в строгом режиме. Избегайте использованияarguments.callee()
либо путем присвоения выражений функции имени, либо использования объявления функции где функция должна вызывать себя ". (хотя он используетcallee()
вместо этогоcallee
, он все еще удален, бу!)Вы можете использовать выражение с именованной функцией (в этом случае функция именуется
abc
), например так:Быстрый и грязный рабочий пример: http://jsfiddle.net/8qvdmLz5/2/ .
Дополнительная информация о выражениях именованных функций: http://kangax.github.io/nfe/ .
источник
источник
Если решение @ Cybernate не работает, попробуйте отключить триггер для его собственной функции, чтобы вы могли ссылаться на нее.
источник
Если кто-то использует jquery, он может сделать это так:
Надеюсь, что это может кому-то помочь. Обратите внимание, что ответ @ user113716 работает хорошо :)
источник
Я думаю, что вам может потребоваться определить функцию-обработчик заранее, например так:
Это позволит вам удалить обработчик по имени изнутри себя.
источник
Попробуйте это, у меня получилось.
источник