Заставить javascript EventListener выполнить один раз?
Мне интересно, возможно ли принудительное прослушивание событий javascript, если условие не является истинным, заставить его выполнить один раз, а затем продолжить прослушивание для выполнения этого условия для дальнейшего выполнения?
Ответы
Ответ 1
var clickFunction = function (event) {
//do some stuff here
window.removeEventListener('click',clickFunction, false );
};
window.addEventListener("click", clickFunction, false);
Это позволит вам запускать clickFunction один раз, поскольку магия закрытия позволяет removeEventListener найти clickFunction.
Не нужно использовать библиотеку, чтобы сделать что-то простое.
Ответ 2
если вы завершите код в функции, просто вызовите функцию загрузки страницы
отредактирован, чтобы добавить пример:
dunno, что ваше событие, но вот пример:
<a ..onclick='someFunction()'>click</a>
<script type='text/javascript'>
function someFunction() {
// do whatever
}
// call the function
someFunction();
</script>
Ответ 3
Если я правильно понимаю ваш вопрос, вы хотите обрабатывать только одно событие за раз (если событие срабатывает несколько раз подряд, вам нужно только обработать один из них), то после завершения обработчика вы продолжите слушать больше событий. Правильно?
jQuery имеет метод .one() api.jquery.com/one
Он обрабатывает событие только один раз, но если вы перевяжите событие в обработчике, он будет функционировать так, как вы хотите.
function handler( )
{
// do stuff
$(this).one( 'click', handler );
}
$('.someElement').one( 'click', handler );