Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 30.09.2016, 17:32
Кандидат Javascript-наук
Отправить личное сообщение для drkrol Посмотреть профиль Найти все сообщения от drkrol
 
Регистрация: 09.10.2013
Сообщений: 114

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

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

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

На jsfiddle я кинул оригинал
Ответить с цитированием
  #2 (permalink)  
Старый 30.09.2016, 17:54
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Так?

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

Последний раз редактировалось laimas, 30.09.2016 в 18:03.
Ответить с цитированием
  #3 (permalink)  
Старый 30.09.2016, 21:44
Кандидат Javascript-наук
Отправить личное сообщение для drkrol Посмотреть профиль Найти все сообщения от drkrol
 
Регистрация: 09.10.2013
Сообщений: 114

Не совсем. Второе нажатие по блоку и по слову переводит вас по ссылке
Ответить с цитированием
  #4 (permalink)  
Старый 30.09.2016, 22:36
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

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
    })
});
Ответить с цитированием
  #5 (permalink)  
Старый 01.10.2016, 01:14
Кандидат Javascript-наук
Отправить личное сообщение для drkrol Посмотреть профиль Найти все сообщения от drkrol
 
Регистрация: 09.10.2013
Сообщений: 114

рони,
О, спасибо Рони. В который раз выручаешь. Но у меня осталась одна проблема. Я это в шапке не оговорил. Что делать если есть категория без дочерних категорий. https://jsfiddle.net/693wgump/7/ вот. Здесь теперь появилось 2 категории: парфюмерия и подарочные наборы. У них нет дочек, и они должны работать просто как ссылки. Нажал на блок-текст > перешел в категорию с первого клика. Но проблема в том, что при нажатии на эти категории перекидывает вот по этому адресу "site.ru/undefined". Подскажите пожалуйста, как сделать чтобы перебрасывало по нужному адресу?
Ответить с цитированием
  #6 (permalink)  
Старый 01.10.2016, 01:58
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

Сообщение от drkrol
как сделать чтобы перебрасывало по нужному адресу?
не нарушать первоначально созданную структуру
Ответить с цитированием
  #7 (permalink)  
Старый 01.10.2016, 02:25
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

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

Сообщение от drkrol
Нажимаете второй раз на этот же самый блок, то вы переходите по ссылке на эту категорию
Ответить с цитированием
  #8 (permalink)  
Старый 01.10.2016, 05:05
Профессор
Отправить личное сообщение для warren buffet Посмотреть профиль Найти все сообщения от warren buffet
 
Регистрация: 08.07.2016
Сообщений: 1,332

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

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

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

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

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как вы относитесь к наркоманам? Maxmaxmaximus7 Оффтопик 7 05.02.2014 13:29
как сделать проверку на display: block; ufaclub jQuery 3 22.12.2013 19:21
Как сделать все содержимое страницы не активным son313 jQuery 9 10.07.2013 16:58
Не понимаю JavaScript. Как сделать ожидание события загрузки данных? xintrea AJAX и COMET 7 01.06.2013 17:18
30(1|2) редирект от сервера. Или как лучше сделать редирект при верной отсылке форма. pizzZ AJAX и COMET 2 18.02.2010 09:06