Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 02.07.2021, 17:21
Новичок на форуме
Отправить личное сообщение для JustMeOnly Посмотреть профиль Найти все сообщения от JustMeOnly
 
Регистрация: 02.07.2021
Сообщений: 4

Открытие пункта меню при переходе на страницу
Здравствуйте, добрые люди!

Может, кто подскажет, как реализовать следующее решение:
есть меню (аккордеон) с ссылками на другие страницы. Как сделать, чтобы при переходе по ссылке (открытии другой страницы) пункт подменю раскрывался и подсвечивался?

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();
  });
});


Заранее спасибо!
Ответить с цитированием
  #2 (permalink)  
Старый 02.07.2021, 17:42
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

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>
Ответить с цитированием
  #3 (permalink)  
Старый 02.07.2021, 20:02
Новичок на форуме
Отправить личное сообщение для JustMeOnly Посмотреть профиль Найти все сообщения от JustMeOnly
 
Регистрация: 02.07.2021
Сообщений: 4

рони,
Большое спасибо!

Пара моментов:

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. А как подсветить пункт основного меню и подменю?

Спасибо!
Ответить с цитированием
  #4 (permalink)  
Старый 02.07.2021, 20:48
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

JustMeOnly,
Сообщение от 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();
    });


Сообщение от JustMeOnly
как сюда картинки загрузить...
либо ссылку через тег либо сделать вложение через Расширенный режим - Дополнительные опции

Последний раз редактировалось рони, 02.07.2021 в 21:00.
Ответить с цитированием
  #5 (permalink)  
Старый 02.07.2021, 21:28
Новичок на форуме
Отправить личное сообщение для JustMeOnly Посмотреть профиль Найти все сообщения от JustMeOnly
 
Регистрация: 02.07.2021
Сообщений: 4

рони,
Ага, понял.

Вложил скриншоты...
Изображения:
Тип файла: jpg wrong.jpg (6.9 Кб, 3 просмотров)
Тип файла: jpg right.jpg (7.6 Кб, 3 просмотров)
Ответить с цитированием
  #6 (permalink)  
Старый 02.07.2021, 22:17
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

JustMeOnly,
можно только гадать ...
Ответить с цитированием
  #7 (permalink)  
Старый 03.07.2021, 00:22
Новичок на форуме
Отправить личное сообщение для JustMeOnly Посмотреть профиль Найти все сообщения от JustMeOnly
 
Регистрация: 02.07.2021
Сообщений: 4

рони,
а сможете посмотреть, если я весь исходник выложу на какой-нибудь файлообменник?
Ответить с цитированием
  #8 (permalink)  
Старый 03.07.2021, 08:15
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

JustMeOnly,
ссылку в личку напишите
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сохранение блока при переходе на другую страницу Игорь Новик Общие вопросы Javascript 2 07.03.2019 18:52
Исчезновение меню при клике на ссылку wiserfild Элементы интерфейса 4 24.10.2015 19:50
Выделение активного пункта меню при ajax запросе faecker AJAX и COMET 6 04.09.2014 19:14
Скрипт для изменения фона и шапки при переходе на страницу Серега187 Элементы интерфейса 12 09.10.2013 16:39
Меню. При открытии любого пункта сворачивались все остальные Drako Элементы интерфейса 6 13.08.2008 13:56