Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как сделать навигацию более эргономичной? (https://javascript.ru/forum/misc/65167-kak-sdelat-navigaciyu-bolee-ehrgonomichnojj.html)

drkrol 30.09.2016 17:32

Как сделать навигацию более эргономичной?
 
Здравствуйте. Есть вот такая навигация https://jsfiddle.net/693wgump/1/ .
Объясняю принцип её работы: Перед глазами вы видите категории. Внутри каждой есть свои дочерние категории.
  • Когда вы нажимаете на блок категории, то выпадает список его дочерних категорий.
  • А если нажать на название категории (на само слово), то вы перейдёте по ссылке на страницу этой категории
Это не совсем удобно. Я бы хотел сделать так:
  • Нажимаете на блок или на текст > открывается список дочерних категорий
  • Нажимаете второй раз на этот же самый блок, то вы переходите по ссылке на эту категорию

То есть первое нажатие открывает список, второе нажатие вас перенаправляет по ссылке.

Я только не могу догнать, как это сделать. Я пытался, но всё приходит к тому, что, если я выбираю, к примеру, категорию "уход за лицом", затем выбираю "уход за телом", а затем снова нажимаю "уход за лицом", то вместо раскрытия списка, я перехожу по ссылке.

На jsfiddle я кинул оригинал

laimas 30.09.2016 17:54

Так?

$(".a-cat").click(function(e){
    var u = $(this).next();
    if(u.is(':hidden')) {
        e.preventDefault();
        $(".sub-nav").slideUp("fast");
        u.slideDown();        
    }
});

drkrol 30.09.2016 21:44

Не совсем. Второе нажатие по блоку и по слову переводит вас по ссылке

рони 30.09.2016 22:36

drkrol,
$(function() {
    $(".sub-cat").click(function(a) {
        a.preventDefault();
        a = $(".sub-nav", this);
        var b = $(".a-cat", this).attr("href");
        a.is(":hidden") ? $(".sub-nav").not(a.slideDown()).slideUp("fast") : window.location = b
    })
});

drkrol 01.10.2016 01:14

рони,
О, спасибо Рони. В который раз выручаешь. Но у меня осталась одна проблема. Я это в шапке не оговорил. Что делать если есть категория без дочерних категорий. https://jsfiddle.net/693wgump/7/ вот. Здесь теперь появилось 2 категории: парфюмерия и подарочные наборы. У них нет дочек, и они должны работать просто как ссылки. Нажал на блок-текст > перешел в категорию с первого клика. Но проблема в том, что при нажатии на эти категории перекидывает вот по этому адресу "site.ru/undefined". Подскажите пожалуйста, как сделать чтобы перебрасывало по нужному адресу?

рони 01.10.2016 01:58

Цитата:

Сообщение от drkrol
как сделать чтобы перебрасывало по нужному адресу?

не нарушать первоначально созданную структуру

laimas 01.10.2016 02:25

Цитата:

Сообщение от drkrol
Не совсем. Второе нажатие по блоку и по слову переводит вас по ссылке

А требовалось разве не это?

Цитата:

Сообщение от drkrol
Нажимаете второй раз на этот же самый блок, то вы переходите по ссылке на эту категорию


warren buffet 01.10.2016 05:05

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

Зачем так делается? Затем, что юзер тупой и с наворотами твоей нафигации разбираться не станет, во-вторых иллюстрированный список категорий коммерческая сущность, а твои глупые менюхи - техническая, никому 100500 лет не интересная.

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

Проблема с нагрузкой решается просто - аякс. Загружай все листинги аяксом.

Думайте коммерчески, а не технически. Техника ваша никому в хер не впилась.


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