Как отменить выполнение события, назначенного через атрибут on в HTML, во время его срабатывания?

Как можно отредактировать функцию gg() в файле HTML, чтобы при событии "touchstart" удалялось событие "click"?
  • 1 мая 2024 г. 15:40
Ответы на вопрос 2
Для отмены выполнения события, назначенного через атрибут on в HTML, во время его срабатывания можно использовать метод preventDefault() объекта события. Например:

```html
<button onclick="event.preventDefault()">Нажми меня</button>
```

Чтобы отредактировать функцию gg() в файле HTML и удалить событие "click" при срабатывании события "touchstart", можно использовать метод removeEventListener(). Например:

```html
<script>
function gg() {
   // Код функции gg()
}

document.getElementById("myElement").addEventListener("click", gg);

document.getElementById("myElement").addEventListener("touchstart", function() {
   document.getElementById("myElement").removeEventListener("click", gg);
});
</script>
```

В данном примере при срабатывании события "touchstart" на элементе с id "myElement" будет удаляться событие "click", назначенное для функции gg().
Если в параметрах функции вы передадите id той кнопки, с которой хотите убрать обработчик, например: <br/> <pre><code class="html">&lt;button id="btn_103" ontouchstart="gg(this.id)" onclick="gg(this.id)"&gt;&lt;/button&gt;</code></pre> <br/> тогда: <br/> <pre><code class="javascript">function gg(id){
 if (event.type == "touchstart"){
    $('#'+id).off("touchstart");
 
 }
}</code></pre> <br/> Или, уж совсем: <br/> <pre><code class="javascript">function gg(id){
   $('#'+id).off(event.type);
}</code></pre> <br/> <br/> Но тогда надо где-то взять переменную event - а она ниоткуда не прилетит сама... <br/> <br/> Поэтому лучше вешать обработчик события не в самой кнопке, а после неё: <br/> <code class="html">&lt;button id="btn_103" &gt;&lt;/button&gt;</code> <br/> <br/> <pre><code class="javascript">$('#btn_103').on("touchstart click", (event)=&gt;{
    // а вот тут уже ваш обработчик, который получит event в качестве переменной!
   $(this).off(event.type);
   //поскольку this - это ссылка на DOM element, который запустил событие
} );</code></pre> <br/> <br/> Вот тут, собственно, все ответы: <br/> <a href="https://api.jquery.com/on/#on-events-selector-data-handler" rel="nofollow">https://api.jquery.com/on/#on-events-selector-data...</a>
Похожие вопросы