Выпадающее меню

Sudba

Гуру форума
Регистрация
6 Дек 2007
Сообщения
930
Реакции
50
Здравствуйте, подскажите пожалуйста, у меня есть Категория и подкатегории.
Нужно, чтобы когда счелкали на категорию, появлялись подкатегории внизу.
А если перейти на подкатегорию, то список не исчезал, а активная подкатегория выделялась
Вот есть сайт:
Скрытое содержимое доступно для зарегистрированных пользователей!

Счелкаете на торты и появляются подкатегории - ОК.
Но если перейти на Ягодный торт, то список слева исчезает - а хотелось бы чтобы он был открыт
 
Код:
<script language="JavaScript" type="text/javascript">
                                                 
    var el = jQuery('#buysimply-vertical-tree a.selected');
    jQuery(el).closest('li').children('ul').show();
                                                 
    do {                                        
        el = jQuery(el).parent().parent();      
        if (!el.length) break;                  
        if (el[0].tagName != 'UL') break;        
        jQuery(el).show();                      
    } while (true);                              
                                                 
</script>

если не работает - обработать напильником
тред перенес в ветку js
 
Последнее редактирование:
Код:
<script language="JavaScript" type="text/javascript">
                                                
    var el = jQuery('#buysimply-vertical-tree a.selected');
    jQuery(el).closest('li').children('ul').show();
                                                
    do {                                       
        el = jQuery(el).parent().parent();     
        if (!el.length) break;                 
        if (el[0].tagName != 'UL') break;       
        jQuery(el).show();                     
    } while (true);                             
                                                
</script>

если не работает - обработать напильником
тред перенес в ветку js
Не работает(((
При этом если в подкатегории нажать на Торты, то видно что она выделена.
У меня само меню организованы с помощью такого скрипта, если его убрать, то аккардеон пропадает
<script langugage="javascript" type="text/javascript">
$(document).ready(function() {
initMenu('ul');

function initMenu(id) {
$(id + ' ul').hide().parent().addClass('subcat');
if ($(id).find('a.selected')) {
$(id).find('a.selected').addClass('selected').parents('ul').show().parents('li').show();
} else $(id + ' ul:first').show();
$(id + ' a').click(function() {
checkElement = $(this).next();
if (checkElement.is('ul')) {
if (!checkElement.is(':visible')) {
// $(id + ' ul:visible').slideUp('normal');
checkElement.slideDown('normal');
} else
checkElement.slideUp('normal');
return false;
}
});
}
})
</script>
 
Так вам нужно сохранять состояние меню - открытое/закрытое?
Попробуйте такой код в конец добавить:
Код:
$(document).ready(function(){
var parentLink = $('a[data-icon-id]:not(".stage-2 a")'), _ = $.cookie('accordion_index') + '';
if (_ == 'undefined' || _ == 'null') {
$.cookie('accordion_index', '', { path: '/' });
} else if (_.length > 1) {
var count = parentLink.length - 1;
while (count >= 0) {
if (_.indexOf(count+'_') >= 0){
    parentLink.eq(count).next('.stage-2').show();
}
  count--;
}
}
parentLink.click(function(){
var f = $(this).data('icon-id') - 1 + '_';
var fC = $.cookie('accordion_index');
if(fC.indexOf(f) < 0) {
f += fC;
$.cookie('accordion_index', f, { path: '/' });
} else {
f = fC.replace(f, '');
$.cookie('accordion_index', f, { path: '/' });
}
});
});
 
Так вам нужно сохранять состояние меню - открытое/закрытое?
Попробуйте такой код:
Код:
$(document).ready(function(){
var parentLink = $('a[data-icon-id]:not(".stage-2 a")'), _ = $.cookie('accordion_index') + '';
if (_ == 'undefined' || _ == 'null') {
$.cookie('accordion_index', '', { path: '/' });
} else if (_.length > 1) {
var count = parentLink.length - 1;
while (count >= 0) {
if (_.indexOf(count+'_') >= 0){
    parentLink.eq(count).next('.stage-2').show();
}
  count--;
}
}
parentLink.click(function(){
var f = $(this).data('icon-id') - 1 + '_';
var fC = $.cookie('accordion_index');
if(fC.indexOf(f) < 0) {
f += fC;
$.cookie('accordion_index', f, { path: '/' });
} else {
f = fC.replace(f, '');
$.cookie('accordion_index', f, { path: '/' });
}
});
});
в этом случае работает, но попробуйте счеелкнуть сейчас по тортам, а потом пирожные и выберите пирожные.Подкатегории остались открыты у Торта.

А должно быть так:
Выбрали Главную категорию - счелкнули - вышел список- челкнули по подкатегории - перешли и она выделилась как активная. При этом список именно данной главной категории открыт.
 
ок. Выпилите тот код. А это в конец:
Код:
$(document).ready(function(){
var pageHref = window.location.pathname.split('/')[2];
$('a[href^="/category/'+pageHref+'"]').next('.stage-2').show();
});
 
ок. Выпилите тот код. А это в конец:
Код:
$(document).ready(function(){
var pageHref = window.location.pathname.split('/')[2];
$('a[href^="/category/'+pageHref+'"]').next('.stage-2').show();
});
Не понял, куда этот код вставить?
 
Не понял, куда этот код вставить?
в идеале в конец документа перед </body></html>. Но можете попробовать и на место старого кода. Просто у вас другой скрипт обрабатывает скрытие всех подменю (.stage-2), что конечно не совсем правильно. JS, как известно, выполняется сверху вниз.
 
Последнее редактирование:
в идеале в конец документа перед </body></html>. Но можете попробовать и на место старого кода. Просто у вас другой скрипт обрабатывает скрытие всех подменю (.stage-2), что конечно не совсем правильно. JS, как известно, выполняется сверху вниз.
Поставил перед </body>
<script language="JavaScript" type="text/javascript">
$(document).ready(function(){
var pageHref = window.location.pathname.split('/')[2];
$('a[href^="/category/'+pageHref+'"]').next('.stage-2').show();
});
</script>

А наверху перед </head>
<script langugage="javascript" type="text/javascript">
$(document).ready(function() {
initMenu('ul');

function initMenu(id) {
$(id + ' ul').hide().parent().addClass('subcat');
if ($(id).find('a.selected')) {
$(id).find('a.selected').addClass('selected').parents('ul').show().parents('li').show();
} else $(id + ' ul:first').show();
$(id + ' a').click(function() {
checkElement = $(this).next();
if (checkElement.is('ul')) {
if (!checkElement.is(':visible')) {
// $(id + ' ul:visible').slideUp('normal');
checkElement.slideDown('normal');
} else
checkElement.slideUp('normal');
return false;
}
});
}
})
</script>
<script language="JavaScript" type="text/javascript">

$(document).ready(function(){

var parentLink = $('a[data-icon-id]:not(".stage-2 a")'), _ = $.cookie('accordion_index') + '';
if (_ == 'undefined' || _ == 'null') {
$.cookie('accordion_index', '', { path: '/' });
} else if (_.length > 1) {
var count = parentLink.length - 1;
while (count >= 0) {
if (_.indexOf(count+'_') >= 0){
parentLink.eq(count).next('.stage-2').show();
}
count--;
}
}
parentLink.click(function(){
var f = $(this).data('icon-id') - 1 + '_';
var fC = $.cookie('accordion_index');
if(fC.indexOf(f) < 0) {
f += fC;
$.cookie('accordion_index', f, { path: '/' });
} else {
f = fC.replace(f, '');
$.cookie('accordion_index', f, { path: '/' });
}
$(document).ready(function(){
var pageHref = window.location.pathname.split('/')[2];
$('a[href^="/category/'+pageHref+'"]').next('.stage-2').show();
});
});
});

</script>
Ничего не изменилось
 
Это удалите:
Код:
<script language="JavaScript" type="text/javascript">


$(document).ready(function(){

var parentLink = $('a[data-icon-id]:not(".stage-2 a")'), _ = $.cookie('accordion_index') + '';
if (_ == 'undefined' || _ == 'null') {
$.cookie('accordion_index', '', { path: '/' });
} else if (_.length > 1) {
var count = parentLink.length - 1;
while (count >= 0) {
if (_.indexOf(count+'_') >= 0){
parentLink.eq(count).next('.stage-2').show();
}
count--;
}
}
parentLink.click(function(){
var f = $(this).data('icon-id') - 1 + '_';
var fC = $.cookie('accordion_index');
if(fC.indexOf(f) < 0) {
f += fC;
$.cookie('accordion_index', f, { path: '/' });
} else {
f = fC.replace(f, '');
$.cookie('accordion_index', f, { path: '/' });
}
$(document).ready(function(){
var pageHref = window.location.pathname.split('/')[2];
$('a[href^="/category/'+pageHref+'"]').next('.stage-2').show();
});
});
});

</script>
language="JavaScript" - нет смысла указывать. Можно <script></script>. Этого достаточно для современных браузеров.
 
Последнее редактирование:
Назад
Сверху