вызвать функцию в jquery по первому событию, которое происходит - PullRequest
0 голосов
/ 17 апреля 2020

Как запустить функцию javascript по единственному событию, чтобы первое событие, которое происходит, должно вызывать ее, а при следующем событии ее не вызывать снова.

, поэтому у меня установлена ​​функция на 2 события, но он должен вызываться только одним из событий, а не обоими.

Ответы [ 2 ]

0 голосов
/ 17 апреля 2020

Вы можете использовать off(), чтобы удалить привязку, как только это произойдет. Если бы вы связывали только одно событие, вы могли бы просто использовать one(), но, поскольку вы связываете несколько событий, в этом случае оно все равно будет связано с другим событием. Поэтому вы должны явно удалить его из обоих, когда это произойдет.

function myMethod(){
  console.log('This should happen only once');
  $('#target').off('blur change', myMethod);
}

$('#target').on('blur change', myMethod);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" id="target" value="">

При желании вы также можете использовать делегата для обработки этого.

$(document.body).on('blur change', '#target:not(.ignore)', function(e){
  console.log('This should happen only once');
  $(e.target).addClass('ignore');
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" id="target" value="">
0 голосов
/ 17 апреля 2020

Возврат false от всех задействованных обработчиков для предотвращения запуска последующих.

Это эквивалентно вызову как e.preventDefault(), так и e.stopPropagation(), то есть не только останавливает другие обработчики событий от запуска, он также предотвращает действие браузера по умолчанию, например. отправка формы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...