Открытие пункта меню при переходе на страницу
Здравствуйте, добрые люди!
Может, кто подскажет, как реализовать следующее решение: есть меню (аккордеон) с ссылками на другие страницы. Как сделать, чтобы при переходе по ссылке (открытии другой страницы) пункт подменю раскрывался и подсвечивался? HTML: <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div style="margin: 20px 0 0 46px"> <a class="link" href="index.html">TO HOME</a> </div> <div id="menu"> <ul> <li> <ul class="list"> <li class="main"> <a href="#" class="link"> <div class="line">Раздел 1</div> </a> </li> <li class="sub"> <ul> <li> <a href="page1.html" class="link"> <div>Ссылка 1</div> </a> </li> </ul> </li> </ul> </li> <li> <ul class="list"> <li class="main"> <a href="#" class="link"> <div class="line">Раздел 2</div> </a> </li> <li class="sub"> <ul> <li> <a href="page2.html" class="link"> <div>Ссылка 2</div> </a> </li> <li> <a href="page3.html" class="link"> <div>Ссылка 3</div> </a> </li> </ul> </li> </ul> </li> </ul> </div> <div class="cont"><br> <span>Страница 1</span> </div> CSS: body { background: black; } .list { border: 2px solid gray; background: black; width: 220px; margin: 0 0 5px 0; padding: 4px 20px; } .list:hover { border: 2px solid white; } .sub { display: none; } .link { text-decoration: none; color: gray; } .link:hover { color: white; } ul, li a { list-style-type: none; outline: none; } .cont { border: 2px solid gray; position: absolute; height: 150px; width: 300px; left: 320px; top: 16px; color: gray; text-align: center; } JS: $(document).ready(function() { $('li.main a').click(function(e) { var dropDown = $(this).parent().next(); $('.sub').not(dropDown).slideUp(240); dropDown.slideToggle(240); e.preventDefault(); }); }); Заранее спасибо! |
JustMeOnly,
<!DOCTYPE html> <html> <head> <title>Untitled</title> <meta charset="utf-8"> <style type="text/css"> body { background: black; } .list { border: 2px solid gray; background: black; width: 220px; margin: 0 0 5px 0; padding: 4px 20px; } .list:hover { border: 2px solid white; } .sub { display: none; } .link { text-decoration: none; color: gray; } .link:hover { color: white; } ul, li a { list-style-type: none; outline: none; } .cont { border: 2px solid gray; position: absolute; height: 150px; width: 300px; left: 320px; top: 16px; color: gray; text-align: center; } </style> </head> <body> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div style="margin: 20px 0 0 46px"> <a class="link" href="index.html">TO HOME</a> </div> <div id="menu"> <ul> <li> <ul class="list"> <li class="main"> <a href="#" class="link"> <div class="line">Раздел 1</div> </a> </li> <li class="sub"> <ul> <li> <a href="page1.html" class="link"> <div>Ссылка 1</div> </a> </li> </ul> </li> </ul> </li> <li> <ul class="list"> <li class="main"> <a href="#" class="link"> <div class="line">Раздел 2</div> </a> </li> <li class="sub"> <ul> <li> <a href="page2.html" class="link"> <div>Ссылка 2</div> </a> </li> <li> <a href="page3.html" class="link"> <div>Ссылка 3</div> </a> </li> </ul> </li> </ul> </li> </ul> </div> <div class="cont"><br> <span>Страница 1</span> </div> <script> let link = 'page2.html' //window.location.href $(document).ready(function() { $('li.main a').click(function(e) { var dropDown = $(this).parent().next(); $('.sub').not(dropDown).slideUp(240); dropDown.slideToggle(240); e.preventDefault(); }); $('.sub a').filter(function() { return link.endsWith(this.getAttribute('href')) }).parents('.sub').slideDown(240); }); </script> </body> </html> |
рони,
Большое спасибо! Пара моментов: 1.При переходе на первую страницу, меню сдвигается вниз. На 2-й и 3-й странице - всё Ок. Я бы на скриншотах показал - не знаю, как сюда картинки загрузить... 2. Адрес страницы я получаю так: $(document).ready(function(){ var location = window.location.href; let link = location.split('/').pop(); $('li.main a').click(function(e){ var dropDown = $(this).parent().next(); $('.sub').not(dropDown).slideUp(240); dropDown.slideToggle(240); e.preventDefault(); }); $('.sub a').filter(function() { return link.endsWith(this.getAttribute('href')) }).parents('.sub').slideDown(240); }); 3. А как подсветить пункт основного меню и подменю? Спасибо! |
JustMeOnly,
Цитата:
$(document).ready(function() { var location = window.location.href; var dropDown = $(); $('li.main a').click(function(e) { dropDown.css({color : ''}).parent().next().css({color : ''}); dropDown = $(this); var sub = dropDown.css({color : 'red'}).parent().next().css({color : 'red'}); $('.sub').not(sub).slideUp(240); sub.slideToggle(240); e.preventDefault(); }); $('.sub a').filter(function() { return location.endsWith(this.getAttribute('href')) }).css({color : 'red'}).parents('.list').find('.main a').click(); }); Цитата:
![]() |
Вложений: 2
рони,
Ага, понял. Вложил скриншоты... |
JustMeOnly,
можно только гадать ... |
рони,
а сможете посмотреть, если я весь исходник выложу на какой-нибудь файлообменник? |
JustMeOnly,
ссылку в личку напишите |
Часовой пояс GMT +3, время: 19:08. |