Правильно определяйте событие касания с помощью JQuery на устройствах, которые не являются устройствами, поддерживающими только касание

Наша компания продает интерактивные светодиодные панели, и меню на нашем веб-сайте не будет правильно открывать пункты подменю при использовании сенсорного ввода. Родительская ссылка в настоящее время является только местозаполнителем для элементов подменю, это означает, что в первом родительском элементе в меню нет href, но это может измениться, тогда вам придется выполнить двойное нажатие на ссылку, чтобы перейти на эту ссылку. Элементы подменю в настоящее время будут отображаться только при наведении курсора.

Я просмотрел большинство ответов на stackru и перепробовал большинство из них, но, похоже, он не работает или некоторые ответы устарели.

Как распознать сенсорные события с помощью jQuery в Safari для iPad? Является ли это возможным?

Javascript, обнаружение сенсорных устройств

https://codeburst.io/the-only-way-to-detect-touch-with-javascript-7791a3346685

https://knackforge.com/blog/karalmax/how-deal-hover-touch-screen-devices

Как проверить браузер на поддержку сенсорного запуска с помощью JS/jQuery?

Я создал оператор If, который будет писать в консоль, если это событие Touchstart или Click. Я использовал JQuery в ("click touchstart") разделе кода для одного из ответов, но не повезло. Когда я проводил тестирование на ПК и на планшетном ПК с сенсорным экраном 2 в 1 (обычный режим), я заметил, что консоль обнаружила его как обычное событие нажатия, когда я нажала на ссылку. Touchstart никогда не подходил. Затем я начал читать Модернизр. На нашем сайте уже работает Modernizr. Я заметил, что на планшете с сенсорным экраном 2 в 1, который показывает Class no-touch, он ведет себя как обычный ПК без Touch. Мне нужно написать код, который будет работать в планшетном и обычном режимах, а также заставить его работать на интерактивной сенсорной светодиодной панели. Наш веб-сайт www.parrot.co.za, вы увидите в меню, что "Документы" является основным родительским элементом с элементами подменю. Я включил скриншот структуры HTML. Чего я хотел бы добиться, так это отображать подменю при нажатии на ссылку меню.

1 ответ

Это решение, которое я придумал. Это откроет подменю на устройствах Touch и Non-Touch, если родительская ссылка не имеет ссылки href. У меня есть класс с CSS-свойством Display:block. Я обнаружил, что класс Hover, который я должен был удалить, так же как и это свойство из Theme, давал проблемы.

Позже я могу добавить инструкцию ELSE, которая откроет подменю после нажатия, но предотвратит событие первого нажатия на родительском элементе фактического перехода на страницу. Он перейдет по ссылке на родительскую страницу, когда кто-то нажмет на нее во второй раз.

 $(".haschild").on("click ", function() {
  var checklinkhref = $(this).find("a");
  if($(checklinkhref).attr('href') === undefined) { 
     if($(this).hasClass("opensubmenu")){
     $(this).removeClass('opensubmenu');  
     $(this).removeClass('hover'); 
  }else{
     $(this).addClass('opensubmenu');
  }
}
});
Другие вопросы по тегам