Задать вопрос
sorry_i_noob
@sorry_i_noob

Как быть с .on('click') на мобильных устройствах?

Я заметил, что .on('click') иногда не срабатывает, если я смотрю сайт в режиме для мобильников. И иногда это сильно раздражает. Например, если у меня есть кнопка на карточке, которая является тегом a (я про карточку - она из тега a сделана). На кнопке есть preventDefault, но он не срабатывает, и после щелчка по кнопке происходит переход по ссылке.

Я заменил .on('click') на .on('touchstart'). Но тут другая проблема. После touchstart срабатывает click. То есть, если я щелкну по документу, у меня закроется, скажем, popup. И под курсором окажется какая-то ссылка. То произойдет переход по ней.

Как решить эту проблему? Вместо touchstart использовать что-то другое? Или каким-то образом останавливать клики после on touchstart?
  • Вопрос задан
  • 100 просмотров
Подписаться 1 Простой 1 комментарий
Помогут разобраться в теме Все курсы
  • Нетология
    Fullstack-разработчик на Python + нейросети
    20 месяцев
    Далее
  • Skillfactory
    Профессия Веб-разработчик
    12 месяцев
    Далее
  • Академия Eduson
    Fullstack-разработчик на JavaScript
    11 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
Exploding
@Exploding
wtf?
Например, если у меня есть кнопка на карточке, которая является тегом a (я про карточку - она из тега a сделана). На кнопке есть preventDefault, но он не срабатывает, и после щелчка по кнопке происходит переход по ссылке.


Нужно остановить "всплытие" события. Возвращайте все как было (без тачстартов всяких) и после preventDefault добавьте stopPropagation.
Т.е. вот так:
//...
event.preventDefault();
event.stopPropagation();
//...

Наверно должно все заработать нормально.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы