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
много раз встречала меню, особенно на мобильных, когда первый раз кликаешь ...

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

voraa 29.07.2020 20:01

Цитата:

Сообщение от Nice
Зайдите в любой крупный интернет магазин (хотя бы даже алиэкспресс),

Зашел. И вышел. Они потеряли клиента, т.к. я не могу им пользоваться легко и просто.
Он не адаптирован под сенсорный экран (не мобильный), а, например, мой ноут с Винд 10 и сенсорным экраном. Т.е все эти меню толком не работают без мыши. А зачем мне мышь, если я пальцем могу тыкать?

laimas 29.07.2020 23:19

voraa,
даже и входить не нужно, банально нельзя будет свернуть раскрытый подраздел в таком меню, какие к черту тут удобства. :)

Nice 30.07.2020 13:29

Цитата:

Сообщение от laimas (Сообщение 527377)
voraa,
даже и входить не нужно, банально нельзя будет свернуть раскрытый подраздел в таком меню, какие к черту тут удобства. :)

Это да. Но это если рассматривать с точки зрения простого меню навигации. А если рассматривать с точки зрения навигации по разделам каталога, то удобство в том, чтобы иметь возможность попасть в любой раздел)

В общем сделала просто разворачивающийся список при щелчке (как все и говорили), но клиент передумал и решил вообще подразделы убрать и оставить только родительские, дабы упростить навигацию. Буду переделывать) Спасибо всем за внимание :D

laimas 30.07.2020 14:34

Цитата:

Сообщение от Nice
Но это если рассматривать с точки зрения простого меню навигации.

Рассматривать нужно только с одной единственно правильной точки зрения - пользователя. Что я должен ожидать следующим действием при повторном щелчке по кнопке, если первый щелчок раскрыл список? Я уверен, что все как и я, будут ожидать его сворачивание, а никак не переход в раздел потому, что так разработчик думает.

Nice 06.08.2020 22:56

Цитата:

Сообщение от laimas (Сообщение 527388)
Рассматривать нужно только с одной единственно правильной точки зрения - пользователя.

Чаще приходится рассматривать с пожеланий заказчика:yes:

Nexus 07.08.2020 13:03

Цитата:

Сообщение от Nice
Чаще приходится рассматривать с пожеланий заказчика

Если заказчик хочет какую-то фигню, то лучше его убедить в том, что это фигня и предложить лучшую альтернативу. Не всегда это возможно правда, но попытаться стоит.


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