Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Удаление событие после вызова
Форумы портала PHP.SU » » Вопросы новичков » Удаление событие после вызова

Страниц (1): [1]
 

1. Prizma - 24 Июня, 2016 - 17:26:18 - перейти к сообщению
Упрощенный пример:
CODE (javascript):
скопировать код в буфер обмена
  1. var array = ['name', 'email', 'phone'];
  2. $.each(array, function (i, v) {
  3.     form.find("input[name=" + v + "]").addClass("error").on("change", function () {
  4.         $(this).removeClass("error");
  5.         /* удалить это событие */
  6.     });
  7. });

В отличии от примера array приходит через ajax и $.each внутри замыкания. А помимо обработчика который я вешаю input, там уже есть и другие обработчики в том числе и на on change.

Подскажите, как удалить конкретный обработчик с конкретного события?

Нужно чтобы обработчик сработал 1 раз, а потом был удалён, но другие обработчики для данного события остались не тронутыми. Было бы круто удалить обработчик прямо изнутри после срабатывания.

Отключить через замыкания используя логическую переменную не подходит, тк это делается не потому, что событие мешает, а потому, что события копятся тк вешаются через ajax кучами и как итог страница может начать тормозить.
2. IllusionMH - 24 Июня, 2016 - 17:28:51 - перейти к сообщению
Prizma, .one вместо .on?
3. Prizma - 24 Июня, 2016 - 17:32:51 - перейти к сообщению
IllusionMH пишет:
Prizma, .one вместо .on?

Блин) как всё просто оказывается

спасибо!

 

Powered by ExBB FM 1.0 RC1