Открытие пункта меню при переходе на страницу
Здравствуйте, добрые люди!
Может, кто подскажет, как реализовать следующее решение: есть меню (аккордеон) с ссылками на другие страницы. Как сделать, чтобы при переходе по ссылке (открытии другой страницы) пункт подменю раскрывался и подсвечивался? 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, время: 12:39. |