Настройка jquery-скрипта. Вертикальное меню в стиле аккордеона для magento

Я нашел этот скрипт jquery в Интернете, и мне нужно его немного настроить. Что он делает, так это заставляет вертикальное меню в magento иметь эффект аккордеона. Однако он делает это только для первой категории и не позволяет вам посещать ее. Я хочу сохранить это, но также разрешить открывать более низкие категории в том же стиле, но при этом переходить на нужную страницу при нажатии. Я надеюсь, что это имело смысл!

Вот сценарий:

//
// this script was written by Ben Frain - more info at http://www.benfrain.com
// 
jQuery(document).ready(function(){
  jQuery('ul#vertnav > li > ul')
    .click(function(e){
      e.stopPropagation();
    })
    .hide();



//this section below prevents the first level links being followed. 
  jQuery('ul#vertnav > li').click(function(event) {
  event.preventDefault();
});

  jQuery('ul#vertnav > li, ul#vertnav > li > ul > li').click(function(){
    var selfClick = jQuery(this).find('ul:first').is(':visible');
    if(!selfClick) {
      jQuery(this)
        .parent()
        .find('> li ul:visible')
        .slideToggle();

    }

    jQuery(this)
      .find('ul:first')
      .stop(true, true)
      .slideToggle();

  });

  //this section make the nereast ul section to the link show
  var url = window.location.toString() // this will return http://mydomain.com/pagename.html?query=xxxxxx


  // this bit adds a class to the active section for CSS 
  jQuery('ul#vertnav > li a').each(function(){
      var myHref= jQuery(this).attr('href');
      if( url.match( myHref)) {
           jQuery(this).addClass('activeClassNameForCSSHighlight')
            jQuery(this).closest('ul').show();
      }
});

});

Спасибо за любую помощь.


person Anthony    schedule 07.01.2012    source источник
comment
Создайте для нас jsFiddle.   -  person Ansel Santosa    schedule 07.01.2012
comment
скрипт js с magento кажется сложным.   -  person roselan    schedule 07.01.2012
comment
попробуйте эту ссылку Вертикальное аккордеонное меню   -  person Oğuz Çelikdemir    schedule 08.01.2012


Ответы (1)


заменять

jQuery('ul#vertnav > li > ul')

by

jQuery('ul#vertnav').find('li > ul')

где это происходит.

и это должно работать. проверьте эту скрипку

EDIT: В моей скрипте я немного изменил логику скрытия «других» меню при нажатии на одно из них и использовал больше переменных вместо селекторов (по соображениям производительности).

person roselan    schedule 07.01.2012
comment
Спасибо за попытку помочь, но теперь второе меню вообще не открывается. - person Anthony; 08.01.2012
comment
Хорошо, теперь, когда я нажимаю на категорию в корне, она закрывает аккордеон. Хотя помощь приветствуется! - person Anthony; 08.01.2012
comment
снова поправил, попался неприятный баг :) fiddle - person roselan; 08.01.2012
comment
Теперь дочерние категории отображаются, когда я нажимаю на корневую категорию, но ссылки не работают, и они также не показывают свои дочерние категории. Вам нужно увидеть файл phtml, который вызывает вертикальную панель навигации? - person Anthony; 08.01.2012
comment
Я не думаю, что мне нужен phtml. Я снова обновил свою скрипку. Однако я не понимаю, что вы подразумеваете под ссылками, которые должны показывать свои дочерние категории. Если они ссылки, как они могут иметь детей?? - person roselan; 08.01.2012
comment
хо! Кажется, я понимаю, как это должно работать. Ссылка загружает только правую колонку, но меню (категории) не перезагружается. И даже если это полная перезагрузка страницы (что magento делать дерьмо), меню инициализируется (открывается) в активной категории. Если это так, то в предоставленном вами коде чего-то не хватает, так как ссылки заблокированы, но ничего не добавляется для обработки щелчка по ссылке. - person roselan; 08.01.2012
comment
Хорошо, я понятия не имею, как кодировать jquery. У вас есть идеи, как я могу это сделать? - person Anthony; 08.01.2012
comment
Я все еще не уверен, что вы хотите сделать:/ попробуйте раскомментировать/комментировать jQuery(this).closest('ul').show(); на своей странице (на основе моей последней скрипки, 2 комментария назад). И скажи мне, что не так. И будь сильным ;) - person roselan; 08.01.2012