sorry_i_noob
@sorry_i_noob

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

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

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

Как решить эту проблему? Вместо touchstart использовать что-то другое? Или каким-то образом останавливать клики после on touchstart?
  • Вопрос задан
  • 54 просмотра
Пригласить эксперта
Ответы на вопрос 1
Exploding
@Exploding
wtf?
Например, если у меня есть кнопка на карточке, которая является тегом a (я про карточку - она из тега a сделана). На кнопке есть preventDefault, но он не срабатывает, и после щелчка по кнопке происходит переход по ссылке.


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

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

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

Войти через центр авторизации
Похожие вопросы