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

Статус
В этой теме нельзя размещать новые ответы.

Chij25

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

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

/*
*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)
}


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

Вложения

  • mod_virtuemart_categories.1.6.3.zip
    8,5 KB · Просмотры: 1
события onmouseover и onmouseout, замени на onclick и добавь проверку на открыто/закрыто меню
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху