Как отменить выполнение события, назначенного через атрибут 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 той кнопки, с которой хотите убрать обработчик, например: 
<button id="btn_103" ontouchstart="gg(this.id)" onclick="gg(this.id)"></button>

тогда:
function gg(id){
 if (event.type == "touchstart"){
    $('#'+id).off("touchstart");
 
 }
}

Или, уж совсем:
function gg(id){
   $('#'+id).off(event.type);
}


Но тогда надо где-то взять переменную event - а она ниоткуда не прилетит сама...

Поэтому лучше вешать обработчик события не в самой кнопке, а после неё:
<button id="btn_103" ></button>

$('#btn_103').on("touchstart click", (event)=>{
    // а вот тут уже ваш обработчик, который получит event в качестве переменной!
   $(this).off(event.type);
   //поскольку this - это ссылка на DOM element, который запустил событие
} );


Вот тут, собственно, все ответы:
https://api.jquery.com/on/#on-events-selector-data...
Похожие вопросы