Помогите разобраться с меню
Есть меню:
<nav id="MainMenu"> <div class="list-group panel"> <a id="tplParentRow1" href="#35" class="list-group-item hvr-underline" data-toggle="collapse" data-parent="#MainMenu"> <span class="fa fa-chevron-down fa-lg"></span> Ремонт однокомнатной квартиры</a> <div class="collapse" id="35"> <a href="remont-odnokomnatnoj-kvartiryi-30-metrov.html" class="first list-group-item"><span class="fa fa-minus fa-lg"></span> Ремонт квартиры 30 метров</a> <a href="remont-odnokomnatnoj-kvartiryi-60-metrov.html" class="last list-group-item"><span class="fa fa-minus fa-lg"></span> Ремонт квартиры 60 метров</a> </div> <a id="tplParentRow1" href="#36" class="list-group-item hvr-underline" data-toggle="collapse" data-parent="#MainMenu"><span class="fa fa-chevron-down fa-lg"></span> Ремонт двух комнатной квартиры</a> <div class="collapse" id="36"> <a href="remont-dvux-komnatnoj-kvartiryi-30-metrov.html" class="first list-group-item"><span class="fa fa-minus fa-lg"></span> Ремонт двух комнатной квартиры 30 метров</a> <a href="remont-dvux-komnatnoj-kvartiryi-60-metrov.html" class="last active current list-group-item"><span class="fa fa-minus fa-lg"></span> Ремонт двух комнатной квартиры 60 метров</a> </div> <a id="tpl" href="remont-balkonov.html" class="list-group-item hvr-underline">Ремонт балконов</a> <a id="tpl" href="/" class="list-group-item hvr-underline">Ремонт квартир</a> </div> </nav> Есть скрипт:
<script>
$(function(){
$('#MainMenu .current').parent('div.collapse').addClass('in');
});
</script>
Меню работает прекрасно, а скрипт который после загрузки страницы должен разворачивать меню аккордеон с текущим пунктом, не работает ПОМОГИТЕ ПОЖАЛУЙСТА, В ДЖАВА ПОЛНЫЙ НОЛЬ Вот живой пример меню на сайте: http://lisovv.bget.ru/remont-dvux-ko...60-metrov.html |
Вадим Вадимыч,
в этой строке у вас уже нет $, да и один класс тут не поможет, поэтому так, но это должно быть сделано сервером, а не клиентом.
jQuery(function(){
jQuery('#MainMenu .current').parent('div.collapse').prev().trigger("click");
});
|
Рони все равно не работает, при загрузки страницы акардеон не раскрыт!
Помогите пожалуйста вторые сутки на это убиваю |
Прошу прошения все работает Спасибо Рони
|
Цитата:
|
Рони прошу помоши
Рони доброе утро. Меню сделал и перенес на основной сайт, все работает прекрасно, спасибо вам!
Но вот дурная голова не дает покоя рукам, вот что хочется реализовать: Вот пример получившегося:http://maniyaremonta.ru/remont-kvartir-kotelniki.html Когда посмотрите на меню по этой ссылки, увидите пункт "Ремонт квартир в Москве", иконочным шрифтом я подставил плюс в начале чтобы пользователю было видно что меню содержит элементы. Вопрос: можно ли сделать чтобы нажимая на подобные ссылки в меню, при клике и раскрытии иконочный шрифт менялся например с "плюса" на "крестик", и обратно по клику сохраняя функционал? Помогите пожалуйста, и прошу прошения за то что отвлекаю!!! |
Ну так меняйте у активного элемента меню у дочернего <i> класс fa-chevron-down на другой желаемый. А лучше fa-chevron-down оставить, разворачивая его.
|
Вадим Вадимыч,
jQuery(function(){
jQuery('#MainMenu .current').parent('div.collapse').prev().trigger("click");
jQuery('a.collapsed').on('click', function() {
jQuery('i',this).toggleClass('fa-plus fa-minus')
});
});
добавить строку 3, если нужно уточнить селектор 'a.collapsed' |
Сайт сделан на MODX вот я и хочу чтобы скриптом менялся иконочный шрифт, или я не прав?
|
Цитата:
|
Подскажите если не трудно какие иконки выбрали бы вы??? СПАСИБО
|
Цитата:
Если и для элементов активных ссылок меню иконки, то они имеют смысл если ассоциируются с их текстами, поэтому тут сами анализируйте и выбирайте. Могу лишь посоветовать следующее. Шрифт Font Awesome в комплекте, это приличный вес, а вы из всего используете скорее не более нескольких процентов. Поэтому можно в этом шрифте оставить только нужное, а также добавить недостающее или подходящее из других шрифтов или просто из SVG наборов в каком либо онлайн редакторе, например этом. В результате вы получите заметно облегченный набор содержащий только необходимое. |
Спасибо
|
У элементов имеющих вложения это стрелка: у закрытого - повернута вправо, у открытого - вниз, показывая раскрытый список. Поворачивать ее можно анимацией.
Не понимаю как можно повернуть анимацией, подскажите пожалуйста??? |
Цитата:
Я давал ссылку на страницу примеров использования этого шрифта, там есть и анимированные иконки, а также код этих примеров в котором по классам можно понять, что к чему. |
Доброго дня. Подобная проблема. После клика на ссылке страница открывается с закрытым аккордеоном. А надо, чтоб оставалось открытым на кликнутой ссылке. сайт
<script type="text/javascript" src="http://delaisait.ucoz.ru/js/jQuery/plugin/multiple-accordion.js"></script>
<script language="JavaScript">
$(document).ready(function() {
$(".dssection").accordion({
accordion:true,
speed: 50,
closedSign: '<img src="http://gtrad.ucoz.net/arvniz.gif">',
openedSign: '<img src="http://gtrad.ucoz.net/arvverh.gif">'
});
});
</script>
<div class="dssection">
<ul>
<li><a href="#">Каталог</a>
<ul>
<li><a href="#http://gtrad.ucoz.net/index/0-19">БРС</a>
<ul>
<li><a href="#http://gtrad.ucoz.net/index/0-19">Камлоки</a>
<ul>
<li><a href="http://gtrad.ucoz.net/publ/14-1-0-2">Алюминий</a></li>
<li><a href="http://gtrad.ucoz.net/index/0-39">Нержа</a></li>
<li><a href="#">Полипропилен</a></li>
<li><a href="#">Кольца</a></li>
<li><a href="#">Размеры</a></li>
<li><a href="#">Адаптеры</a>
<ul>
<li><a href="#">Под приварку</a></li>
<li><a href="#">Фланцевые</a></li>
<li><a href="#">Подуровень 3</a></li>
<li><a href="#">Подуровень 4</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="#">Буровые</a></li>
<li><a href="#">Подуровень 3</a></li>
<li><a href="#">Подуровень 4</a></li>
</ul>
</li>
<li><a href="#">Уровень 1-2</a></li>
<li><a href="#">Уровень 1-3</a></li>
<li><a href="#">Рукава</a>
<ul>
<li><a href="#">Рукава 1</a></li>
<li><a href="#">Рукава 2</a></li>
<li><a href="#">Подуровень 3</a></li>
<li><a href="#">Подуровень 4</a></li>
</ul>
</li>
<li><a href="#">Уровень 1-4</a></li>
</ul>
</li>
<li><a href="#">Фильтр</a></li>
<li><a href="#">2я ячейка пунктов</a>
<ul>
<li><a href="#">Уровень 1</a></li>
<li><a href="#">Уровень 2 переход</a>
<ul>
<li><a href="#">Подуровень 1</a></li>
<li><a href="#">Подуровень 2</a></li>
<li><a href="#">Подуровень 3</a></li>
<li><a href="#">Подуровень 4</a></li>
</ul>
</li>
<li><a href="#">Уровень 1-2</a></li>
<li><a href="#">Уровень 1-3</a></li>
<li><a href="#">Уровень 1-4</a></li>
</ul>
</li>
<li><a href="#">3я ячейка пунктов</a>
<ul>
<li><a href="#">Уровень 1</a></li>
<li><a href="#">Уровень 1-2</a></li>
<li><a href="#">Уровень 2 переход</a>
<ul>
<li><a href="#">Подуровень 1</a></li>
<li><a href="#">Подуровень 2</a></li>
<li><a href="#">Подуровень 3</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
и скрипт
/*
* jQuery UI Multilevel Accordion v.1
* Copyright (c) 2011 Pieter Pareit
* [url]http://www.scriptbreaker.com[/url]
*/
//plugin definition
(function($){
$.fn.extend({
//передать переменную options в функцию
accordion: function(options) {
var defaults = {
accordion: 'true',
speed: 300,
closedSign: '[+]',
openedSign: '[-]'
};
// Расширьте наши параметры по умолчанию с предоставленными вами.
var opts = $.extend(defaults, options);
//Назначить текущий элемент переменной, в этом случае это элемент UL
var $this = $(this);
//добавьте отметку [+] в многоуровневое меню
$this.find("li").each(function() {
if($(this).find("ul").size() != 0){
//добавить многоуровневый знак рядом со ссылкой
$(this).find("a:first").append("<span>"+ opts.closedSign +"</span>");
//избегайте прыгать в верхнюю часть страницы, когда href является #
if($(this).find("a:first").attr('href') == "#"){
$(this).find("a:first").click(function(){return false;});
}
}
});
//открытый активный уровень
$this.find("li.active").each(function() {
$(this).parents("ul").slideDown(opts.speed);
$(this).parents("ul").parent("li").find("span:first").html(opts.openedSign);
});
$this.find("li a").click(function() {
if($(this).parent().find("ul").size() != 0){
if(opts.accordion){
//Ничего не делать, когда список открыт
if(!$(this).parent().find("ul").is(':visible')){
parents = $(this).parent().parents("ul");
visible = $this.find("ul:visible");
visible.each(function(visibleIndex){
var close = true;
parents.each(function(parentIndex){
if(parents[parentIndex] == visible[visibleIndex]){
close = false;
return false;
}
});
if(close){
if($(this).parent().find("ul") != visible[visibleIndex]){
$(visible[visibleIndex]).slideUp(opts.speed, function(){
$(this).parent("li").find("span:first").html(opts.closedSign);
});
}
}
});
}
}
if($(this).parent().find("ul:first").is(":visible")){
$(this).parent().find("ul:first").slideUp(opts.speed, function(){
$(this).parent("li").find("span:first").delay(opts.speed).html(opts.closedSign);
});
}else{
$(this).parent().find("ul:first").slideDown(opts.speed, function(){
$(this).parent("li").find("span:first").delay(opts.speed).html(opts.openedSign);
});
}
}
});
}
});
})(jQuery);
и css .dssection {background: #f3f3f5;padding:0;list-style:none;} .dssection ul{padding: 0;margin: 0;font-size: 11x;line-height: 12px;list-style: none;} .dssection li {;list-style: none;} /*menu0*/ .dssection li a {display: block;line-height: 12px;/*text-indent:5px;*/padding-left: 5px;color:#000;height: 15px;text-decoration: none;font-size: 11px;font-weight: normal;outline:none;} .dssection li a:hover {display: block;background: #e6e6e6;text-decoration:none;} /*menu-1 */ .dssection ul ul {background:#fff;/*padding: 10px 0 10px 0*/;display:none;} .dssection ul ul li {margin: 0;padding: 0;clear: both;} .dssection ul ul li a {/* Цвет фона внутри */background: #fff;padding: 0px 0 0 0;height:15px;line-height: 12px;text-decoration: none;/* Цвет текста */color: #005e2b;text-indent:10px;font-size:11px;} .dssection ul ul li.active a {color: #000;font-weight: bold;} .dssection ul ul li a:hover {/*menu-1 */background: #e6e6e6;padding: 0px 0 0 0;height:15px;line-height: 12px;text-decoration: none;/* Цвет текста при наведении */color: #005e2b;text-indent:10px;/* Размер текста при наведении */font-size:11px;} /*menu-2 */ .dssection ul ul ul li a {color:#000;padding-left:5px;} .dssection ul ul ul li.active a {color: #000;font-weight: bold;} .dssection ul ul ul li a:hover {/* menu 2 */background-color:#D3CEB8;/* Цвет текста пункта при наведении */color:#675C7C;padding-left: 5px;} /*menu-3 */ .dssection ul ul ul ul li a {color:#000;padding-left:10px;} .dssection ul ul ul li.active a {color: #000;font-weight: bold;} .dssection ul ul ul ul li a:hover {/* menu 2 */background-color:#D3CEB8;/* Цвет текста пункта при наведении */color:#675C7C;padding-left: 10px;} /*menu-4 */ .dssection ul ul ul ul ul li a {color:#ff0000;padding-left:15px;} .dssection ul ul ul li.active a {color: #000;font-weight: bold;} .dssection ul ul ul ul ul li a:hover {background-color:#D3CEB8;color:#675C7C;padding-left: 15px;} .dssection ul span{float: right;clear:both; padding-right:5px} |
Шибалов,
предположим выбрали Фланцевые, сервер, выбранному пункту меню, ставит класс uMenuItemA (строка 72), тогда собираем всех родителей и кликаем (строка 49). на вашем сайте это не сработет, там не дерево в меню ... связь между блоками меню одному вам известна.
<!DOCTYPE html>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css"> .dssection {background: #f3f3f5;padding:0;list-style:none;}
.dssection ul{padding: 0;margin: 0;font-size: 11x;line-height: 12px;list-style: none;}
.dssection li {;list-style: none;}
/*menu0*/
.dssection li a {display: block;line-height: 12px;/*text-indent:5px;*/padding-left: 5px;color:#000;height: 15px;text-decoration: none;font-size: 11px;font-weight: normal;outline:none;}
.dssection li a:hover {display: block;background: #e6e6e6;text-decoration:none;}
/*menu-1 */
.dssection ul ul {background:#fff;/*padding: 10px 0 10px 0*/;display:none;}
.dssection ul ul li {margin: 0;padding: 0;clear: both;}
.dssection ul ul li a {/* Цвет фона внутри */background: #fff;padding: 0px 0 0 0;height:15px;line-height: 12px;text-decoration: none;/* Цвет текста */color: #005e2b;text-indent:10px;font-size:11px;}
.dssection ul ul li.active a {color: #000;font-weight: bold;}
.dssection ul ul li a:hover {/*menu-1 */background: #e6e6e6;padding: 0px 0 0 0;height:15px;line-height: 12px;text-decoration: none;/* Цвет текста при наведении */color: #005e2b;text-indent:10px;/* Размер текста при наведении */font-size:11px;}
/*menu-2 */
.dssection ul ul ul li a {color:#000;padding-left:5px;}
.dssection ul ul ul li.active a {color: #000;font-weight: bold;}
.dssection ul ul ul li a:hover {/* menu 2 */background-color:#D3CEB8;/* Цвет текста пункта при наведении */color:#675C7C;padding-left: 5px;}
/*menu-3 */
.dssection ul ul ul ul li a {color:#000;padding-left:10px;}
.dssection ul ul ul li.active a {color: #000;font-weight: bold;}
.dssection ul ul ul ul li a:hover {/* menu 2 */background-color:#D3CEB8;/* Цвет текста пункта при наведении */color:#675C7C;padding-left: 10px;}
/*menu-4 */
.dssection ul ul ul ul ul li a {color:#ff0000;padding-left:15px;}
.dssection ul ul ul li.active a {color: #000;font-weight: bold;}
.dssection ul ul ul ul ul li a:hover {background-color:#D3CEB8;color:#675C7C;padding-left: 15px;}
.dssection ul span{float: right;clear:both; padding-right:5px}
.dssection .uMenuItemA > a{
border: 1px solid #FF0000;
}
</style>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script src="https://delaisait.ucoz.ru/js/jQuery/plugin/multiple-accordion.js"></script>
<script>
$(function() {
$(".dssection").accordion({
accordion: true,
speed: 50,
closedSign: '<img src="https://gtrad.ucoz.net/arvniz.gif">',
openedSign: '<img src="https://gtrad.ucoz.net/arvverh.gif">'
});
$(".uMenuItemA").parentsUntil(".dssection").add(".uMenuItemA").find("a:first").click();
});
</script>
</head>
<body>
<div class="dssection">
<ul>
<li><a href="#">Каталог</a>
<ul>
<li><a href="#http://gtrad.ucoz.net/index/0-19">БРС</a>
<ul>
<li><a href="#http://gtrad.ucoz.net/index/0-19">Камлоки</a>
<ul>
<li><a href="http://gtrad.ucoz.net/publ/14-1-0-2">Алюминий</a></li>
<li><a href="http://gtrad.ucoz.net/index/0-39">Нержа</a></li>
<li><a href="#">Полипропилен</a></li>
<li><a href="#">Кольца</a></li>
<li><a href="#">Размеры</a></li>
<li ><a href="#">Адаптеры</a>
<ul>
<li><a href="#">Под приварку</a></li>
<li class="uMenuItemA"><a href="#">Фланцевые</a></li>
<li><a href="#">Подуровень 3</a></li>
<li><a href="#">Подуровень 4</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="#">Буровые</a></li>
<li><a href="#">Подуровень 3</a></li>
<li><a href="#">Подуровень 4</a></li>
</ul>
</li>
<li><a href="#">Уровень 1-2</a></li>
<li><a href="#">Уровень 1-3</a></li>
<li><a href="#">Рукава</a>
<ul>
<li><a href="#">Рукава 1</a></li>
<li><a href="#">Рукава 2</a></li>
<li><a href="#">Подуровень 3</a></li>
<li><a href="#">Подуровень 4</a></li>
</ul>
</li>
<li><a href="#">Уровень 1-4</a></li>
</ul>
</li>
<li><a href="#">Фильтр</a></li>
<li><a href="#">2я ячейка пунктов</a>
<ul>
<li><a href="#">Уровень 1</a></li>
<li><a href="#">Уровень 2 переход</a>
<ul>
<li><a href="#">Подуровень 1</a></li>
<li><a href="#">Подуровень 2</a></li>
<li><a href="#">Подуровень 3</a></li>
<li><a href="#">Подуровень 4</a></li>
</ul>
</li>
<li><a href="#">Уровень 1-2</a></li>
<li><a href="#">Уровень 1-3</a></li>
<li><a href="#">Уровень 1-4</a></li>
</ul>
</li>
<li><a href="#">3я ячейка пунктов</a>
<ul>
<li><a href="#">Уровень 1</a></li>
<li><a href="#">Уровень 1-2</a></li>
<li><a href="#">Уровень 2 переход</a>
<ul>
<li><a href="#">Подуровень 1</a></li>
<li><a href="#">Подуровень 2</a></li>
<li><a href="#">Подуровень 3</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</body>
</html>
|
Посоветуете, как выкрутиться?
|
Шибалов,
на сервере нужно сделать нормальную иерархию пунктов. нужен специалист по php и html. |
вот здесь уменьшил меню. Всё вроде работает, а на сайте не хочет.
|
А так работает???
<div class="dssection">
<ul>
<li><a href="#">Каталог</a>
<ul>
<li><a href="/index/0-19">БРС</a>
<ul>
<li><a href="/index/0-20">Камлоки</a>
<ul>
<li><a href="/publ/14-1-0-2">Алюминий</a></li>
<li><a href="/index/0-39">Нержа</a></li>
<li><a href="#">Полипропилен</a></li>
<li><a href="#">Кольца</a></li>
<li><a href="#">Размеры</a></li>
<li><a href="#">Адаптеры</a>
<ul>
<li><a href="#">Под приварку</a></li>
<li><a href="#">Фланцевые</a></li>
<li><a href="#">Подуровень 3</a></li>
<li><a href="#">Подуровень 4</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="#">Буровые</a></li>
<li><a href="#">Подуровень 3</a></li>
<li><a href="#">Подуровень 4</a></li>
</ul>
</li>
<li><a href="#">Рукава</a>
<ul>
<li><a href="#">Рукава 1</a></li>
<li><a href="#">Рукава 2</a></li>
<li><a href="#">Подуровень 3</a></li>
<li><a href="#">Подуровень 4</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<style>
.dssection a:not(:only-child)::after {
content: url(http://gtrad.ucoz.net/arvverh.gif);
padding: 0 .4em;
vertical-align: .1em;
}
.dssection a:not(:only-child).expanded::after {
content: url(http://gtrad.ucoz.net/arvniz.gif)
}
</style>
<script>
Array.from(document.querySelectorAll(".dssection a + ul")).forEach(function(element) {
element.hidden = true;
});
document.addEventListener("click", function(event) {
if(event.target.matches(".dssection a") && event.target.nextElementSibling.tagName === "UL") {
event.preventDefault();
event.target.nextElementSibling.hidden = !event.target.nextElementSibling.hidden;
event.target.classList.toggle("expanded", !event.target.nextElementSibling.hidden);
}
});
</script>
UPD Вместе со стилями из 1-го поста https://jsfiddle.net/b9Luk1td/ И удалите на сайте в файле my.css на 408 строке display: none; |
"Удалил на сайте в файле my.css на 408 строке display: none;" - меню загружается полностью открытым. Не работает. Вернул как было.
Кода намного меньше. Жмешь на ссылку в подкатегории, страница открывается, а меню закрывается. Вот здесь нашел меню с 4 уровнями вложенности. Вроде работает. |
| Часовой пояс GMT +3, время: 20:36. |