Вопрос по меню

Тема в разделе "PHP Pro", создана пользователем Chij25, 5 май 2010.

Статус темы:
Закрыта.
  1. Chij25

    Chij25

    Регистр.:
    9 апр 2009
    Сообщения:
    272
    Симпатии:
    27
    Мудуль меню для виртмата, меню сделанно по типу акордеон, (если без акардиона то все категории в том чесле вложенные сразу открыты) при наведению на категорию открываются вложенные категории.
    Вопрос как сделать так чтобы не при наведении а при клики на категорию открывались вложенные категории.

    вод код скрипта акордиона

    /*
    *Mod_Accordionmenu by James Frank
    *
    * License: GNU/GPL
    *
    *Based off of v1.0 - by ah72, July 2008
    *
    */


    function accordionMenu(menuId, srcExpandImage, srcCollapseImage, accOptions, accHoverDelay, bDoHover) {
    if($(menuId)){

    // getting accordion parent items ("li" tags with class "parent")
    $(menuId).accParentItems = [];

    for(var i = 0; i < $(menuId).childNodes.length; i++) {

    if($(menuId).childNodes.className.indexOf('parent') >= 0){
    $(menuId).accParentItems.push($(menuId).childNodes);
    }
    }


    $(menuId).accTogglers = [];
    $(menuId).accElements = [];
    var startItem = -1;

    for(var i = 0; i < $(menuId).accParentItems.length; i++) {

    if(srcExpandImage.length > 0){

    // creating accordion togglers
    var accToggler = document.createElement("img");

    accToggler.setAttribute("title","Expand");
    accToggler.setAttribute("src",srcExpandImage);
    }
    else
    {
    var accToggler = document.createElement("span");
    }
    $(menuId).accParentItems.insertBefore(accToggler, $(menuId).accParentItems.firstChild);

    $(menuId).accTogglers.push(accToggler);


    // accordion elements
    $(menuId).accElements.push($(menuId).accParentItems.getElementsByTagName('ul')[0]);

    // searching for active menu item to make the accordion show its sub-items when page loads
    if ( $(menuId).accParentItems.className.indexOf('active') >= 0 ) {
    startItem = i;
    }
    }

    //create our Accordion instance
    if ( $(menuId).accParentItems.length > 0 ){
    $(menuId).Accordion = new Accordion($(menuId).accTogglers, $(menuId).accElements, $merge({
    opacity: false,
    alwaysHide: true,
    show: startItem,
    duration: 600,
    transition: Fx.Transitions.Bounce.easeOut,

    onActive: function(toggler, element){
    element.parentNode.parentNode.setStyle('height', 'auto');
    toggler.setAttribute("src", srcCollapseImage);
    toggler.setAttribute("title","Collapse");
    },
    onBackground: function(toggler, element){
    element.parentNode.parentNode.setStyle('height', 'auto');
    element.setStyle('height', element.offsetHeight+'px');
    toggler.setAttribute("src", srcExpandImage);
    toggler.setAttribute("title","Expand");
    }

    }, accOptions)

    );
    }


    accTimer = null;
    if (!accHoverDelay) var accHoverDelay = 200;

    for(var i = 0; i < $(menuId).accParentItems.length; i++) {

    eval("function accOnclickFunc(){return function(){ if( $('"+menuId+"').accElements["+i+"].style.height == '0px' ) { $('"+menuId+"').Accordion.display("+i+") }}}");
    eval("function accOnMouseoverFunc(){return function(){if( $('"+menuId+"').accElements["+i+"].style.height == '0px' ){accTimer = $('"+menuId+"').Accordion.display.delay("+accHoverDelay+", $('"+menuId+"').Accordion, "+i+");}}}");
    eval("function accOnmouseoutFunc(){return function(){if($defined(accTimer)){$clear(accTimer);}}}");

    $(menuId).accParentItems.firstChild.nextSibling.onclick = accOnclickFunc();
    if (bDoHover==1) {
    $(menuId).accParentItems.firstChild.nextSibling.onmouseover = accOnMouseoverFunc();
    }
    $(menuId).accParentItems.firstChild.nextSibling.onmouseout = accOnmouseoutFunc();
    }


    for(var i = 0; i < $(menuId).accElements.length; i++) {
    $(menuId).accElements.setAttribute('id', menuId+'_'+i);
    accordionMenu(menuId+'_'+i, srcExpandImage, srcCollapseImage, accOptions, accHoverDelay, bDoHover)
    }


    в приложении сам модуль полностью.
    Помогите, очень нужно
    }
    }
     

    Вложения:

  2. -=Xardas=-

    -=Xardas=-

    Регистр.:
    17 сен 2008
    Сообщения:
    250
    Симпатии:
    58
    события onmouseover и onmouseout, замени на onclick и добавь проверку на открыто/закрыто меню
     
Статус темы:
Закрыта.