Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как сделать родительский пункт меню кликабельным после разворачивания? (https://javascript.ru/forum/misc/80759-kak-sdelat-roditelskijj-punkt-menyu-klikabelnym-posle-razvorachivaniya.html)

Nice 28.07.2020 00:29

Как сделать родительский пункт меню кликабельным после разворачивания?
 
Здравствуйте, пытаюсь написать обработчик для многоуровнего меню. На сайте есть меню, в котором выводятся категории и подкатегории товаров.

Сейчас категории и подкатегории в меню кликабельны и ведут в каталог товаров. Мне же надо, чтобы родительская категория изначально была с неактивной ссылкой href="#" и разворачивала подкатегории. А уже если они развёрнуты, то тогда можно активировать ссылку на категории и тоже перейти по ней в каталог. Подскажите как это реализовать?

На данный момент дочерние пункты разворачиваются при наведении мыши mouseover и .addClass('active'), а событие click не могу повесить, т.к. он просто провалится по ссылке в каталог, а не развернёт подпункты.

Например:

Машинное масло
-для автомобилей
-для мотоциклов
-для водной техники

Направьте меня, пожалуйста, как это делается, а то я зависла что-то..

voraa 28.07.2020 15:21

Цитата:

Сообщение от Nice
а событие click не могу повесить, т.к. он просто провалится по ссылке в каталог, а не развернёт подпункты.

Это плохое, неправильное меню.
ИМХО.
Что делать тем, у кого нет мыши? Например, планшет, или кто то пользуется клавиатурой?

Nice 28.07.2020 15:40

Цитата:

Сообщение от voraa (Сообщение 527349)
Это плохое, неправильное меню.
ИМХО.
Что делать тем, у кого нет мыши? Например, планшет, или кто то пользуется клавиатурой?

вот как раз поэтому мне и надо переделать его. Но как сделать родительский пункт меню с неактивной ссылкой при первом щелчке? А потом её активировать. В этом же и суть вопроса собственно)

voraa 28.07.2020 22:19

Я же говорю, что это неправильное меню.
Меню - это некоторый стандартный элемент, который должен вести себя стандартно. Юзвери уже побывали на куче сайтов и знают, как должно себя вести меню. Обычное действие - при клике на пункт меню, либо выполняется команда, предусмотренная этим пунктом, либо открывается меню следующего уровня. В последнем случае, повторный клик на этом пункте, должен закрыть это подменю. Юзвери привыкли, что это работает так. Так сделано почти везде. Как он поймет, что повторный клик сделает что то другое? И как тогда закрывать подменю?

Nexus 28.07.2020 22:44

Полностью согласен с voraa.
Лучше либо добавить новую ссылку в раскрывающийся список, которая будет вести на нужную страницу, либо сделать так, чтобы по клику на ссылке пользователь переходил на нужную страницу, а по клику на стрелочку справа от ссылки раскрывалось/скрывалось сабменю.

Nice 28.07.2020 23:15

Цитата:

Сообщение от voraa (Сообщение 527354)
Я же говорю, что это неправильное меню.
Меню - это некоторый стандартный элемент, который должен вести себя стандартно. Юзвери уже побывали на куче сайтов и знают, как должно себя вести меню. Обычное действие - при клике на пункт меню, либо выполняется команда, предусмотренная этим пунктом, либо открывается меню следующего уровня. В последнем случае, повторный клик на этом пункте, должен закрыть это подменю. Юзвери привыкли, что это работает так. Так сделано почти везде. Как он поймет, что повторный клик сделает что то другое? И как тогда закрывать подменю?

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

Nice 28.07.2020 23:30

Цитата:

Сообщение от Nexus (Сообщение 527356)
Полностью согласен с voraa.
Лучше либо добавить новую ссылку в раскрывающийся список, которая будет вести на нужную страницу, либо сделать так, чтобы по клику на ссылке пользователь переходил на нужную страницу, а по клику на стрелочку справа от ссылки раскрывалось/скрывалось сабменю.

стрелочку я сделала и она работает, но для мобильного было бы удобнее, чтобы можно было кнопку полностью тыкнуть, а не целиться в стрелочки сбоку) можно промахнуться. Т.е. тут стоит вопрос удобства. Заглушку тоже уже прописала через js и меню по щелчку открывается, но вот вернуть обратно кликабельность пункта не получается что-то.

$('.dropdown-menu__section__title a').click(function() { 
	var old_href = $('.dropdown-menu__section__title a').prosp('href'); // Записали оригинальную ссылку в переменную
	$('.dropdown-menu__section__title a').attr('href', '#'); // Заменили ссылку на заглушку

//Тут пробую вешать и счётчик и через условие и через класс active, но не всё равно не срабатывает
	$('.dropdown-menu__section__title a').attr('href', 'old_href'); //Вернули ссылку
	$('.dropdown-menu__section__title a').click; //Вернули кликабельность

});

laimas 29.07.2020 01:08

Ссылки должны быть только у активных разделов, кнопкам которые разворачивают список разделов зачем ссылки?

Nice 29.07.2020 01:31

Цитата:

Сообщение от laimas (Сообщение 527360)
Ссылки должны быть только у активных разделов, кнопкам которые разворачивают список разделов зачем ссылки?

потому что это меню с категориями товаров. Категорий дофига и цель была их спрятать в родительские. Потому что не вмещаются полным списком. Зайдите в любой крупный интернет магазин (хотя бы даже алиэкспресс), там подкатегории выпадают из родительских. И все они кликабельны (как родители, так и дети). Странно, что тут на форуме это всех удивляет) в любом случае работаю с тем, что есть. Пока что спрятала в родительские и сделала их некликабельными href="#". Но лично я сама много раз встречала меню, особенно на мобильных, когда первый раз кликаешь - разворачивается шторка, а когда она развёрнута, то родитель тоже становится кликабелен. Неужели никто такого не встречал?:)

laimas 29.07.2020 06:10

Цитата:

Сообщение от Nice
много раз встречала меню, особенно на мобильных, когда первый раз кликаешь ...

Я нет, и надеюсь не встречу. Тогда ссылка и кнопка, а не такие мытарства.


Часовой пояс GMT +3, время: 09:14.