$('.menu__list').on('mouseleave mouseenter click', function (e) { if( e.relatedTarget === null && e.type !== 'click' ) return; switch( e.handleObj.origType ) { case 'mouseleave': $(this).find('.middleMenu__drop').slideUp(100); break; case 'mouseenter': $(this).find('.middleMenu__drop').slideDown(100); break; case 'click': $('.middleMenu__drop').slideToggle(100); break; } }); Это работает как задумано. UPD Нет, есть глюк со сворачиванием меню. Если открыть меню, а потом тапнуть куда-нибудь мимо, то меню свернется, а если повторно тапнуть, что бы меню развернулось, то оно развернется и тут же свернется |
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <ul class="wrap middleMenu"> <li class="menu__list first"><a>Каталог</a> <ul class="middleMenu__drop" style="display: none;"> <li><a href="https://google.com">Туфли</a></li> <li><a href="https://google.com">Босоножки</a></li> <li><a href="https://google.com">Кеды</a></li> <li><a href="https://google.com">Кросcовки</a></li> <li><a href="https://google.com">Ботинки демисезон</a></li> <li><a href="https://google.com">Сапоги демисезон</a></li> </ul> </li> <li><a href="https://yandex.ru">ОПЛАТА / ДОСТАВКА</a></li> <li><a href="https://yandex.ru">ОТЗЫВЫ О МАГАЗИНЕ</a></li> <li class="last"><a href="https://yandex.ru">НОВИНКИ</a></li> </ul> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> <script> function is_touch_device() { return (('ontouchstart' in window) || (navigator.MaxTouchPoints > 0) || (navigator.msMaxTouchPoints > 0)); } if (!is_touch_device()) { $('.menu__list').on('mouseenter', function (e) { $('.middleMenu__drop').slideDown(100); }); $('.menu__list').on('mouseleave', function (e) { $('.middleMenu__drop').slideUp(100); }); } else { $('.menu__list>a').on('touchstart', function (e) { e.stopPropagation(); $('.middleMenu__drop').slideToggle(100); }); } </script> </body> </html> немного изменил, поэксперементируйте |
Спасибо. Последнее работает пока что без глюков
|
Часовой пояс GMT +3, время: 18:10. |