Форум программистов, компьютерный форум, киберфорум
jQuery
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.74/19: Рейтинг темы: голосов - 19, средняя оценка - 4.74
0 / 0 / 0
Регистрация: 18.02.2013
Сообщений: 25

Меню аккордеон

20.02.2013, 16:10. Показов 3550. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть менюшка аккордеон.
Как сделать так чтоб первый пункт меню по-умолчанию (при загрузке страницы) был развернут...
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$(document).ready(function(){
  $("#nav > li > a").on("click", function(e){
    if($(this).parent().has("ul")) {
      e.preventDefault();
    }
    if(!$(this).hasClass("open")) {
      // hide any open menus and remove all other classes
      $("#nav li ul").slideUp(350);
      $("#nav li a").removeClass("open");
      
      // open our new menu and add the open class
      $(this).next("ul").slideDown(350);
      $(this).addClass("open");
    }
    
    else if($(this).hasClass("open")) {
      $(this).removeClass("open");
      $(this).next("ul").slideUp(350);
    }
  });
});
Добавлено через 1 час 24 минуты
Вот пример самого меню
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.02.2013, 16:10
Ответы с готовыми решениями:

Меню аккордеон
Это код меню аккордеона <script type="text/javascript"> $(document).ready(function() { // Хранение переменных var...

Меню-аккордеон
Добрый день Ув. пользователи форума. Возникла проблема с блоками меню, решил воспользоваться jQuery. Неполучается сделать скрытие фона...

Меню-аккордеон jQuery
Помогите, пожалуйста, немного изменить скрипт. Взял его отсюда: http://efimov.ws/main/develop/javascript/menus-accordion.html - 9-ая...

13
разработчик
 Аватар для pavlinmavlin
258 / 48 / 22
Регистрация: 24.07.2012
Сообщений: 219
Записей в блоге: 17
20.02.2013, 18:56
Цитата Сообщение от PAGAR Посмотреть сообщение
Есть менюшка аккордеон.
Как сделать так чтоб первый пункт меню по-умолчанию (при загрузке страницы) был развернут...
Кликните здесь для просмотра всего текста
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$(document).ready(function(){
  $("#nav > li > a").on("click", function(e){
    if($(this).parent().has("ul")) {
      e.preventDefault();
    }
    if(!$(this).hasClass("open")) {
      // hide any open menus and remove all other classes
      $("#nav li ul").slideUp(350);
      $("#nav li a").removeClass("open");
      
      // open our new menu and add the open class
      $(this).next("ul").slideDown(350);
      $(this).addClass("open");
    }
    
    else if($(this).hasClass("open")) {
      $(this).removeClass("open");
      $(this).next("ul").slideUp(350);
    }
  });
});


Добавлено через 1 час 24 минуты
Вот пример самого меню
Задайте первому меню второго уровня определенный id и выставьте в файле стилей для него:
CSS
1
 display:block;
Или у самого меню второго уровня добавить:
HTML5
1
style='display:block;'
Пример:
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
  <div id="w">
    <nav>
      <ul id="nav">
        <li><a align="center" href="#">КАТАЛОГ ТОВАРОВ</a>
          <ul style='display:block;'>
            <li><a href="#">ГОТОВЫЕ ШКАФЫ КУПЕ</a></li>
            <li><a href="#">КУХНИ</a></li>
            <li><a href="#">ДЕТСКИЕ</a></li>
            <li><a href="#">КОМПЬЮТЕРНЫЕ СТОЛЫ</a></li>
            <li><a href="#">ОФИСНАЯ МЕБЕЛЬ</a></li>
            <li><a href="#">КУХОННЫЕ УГОЛКИ</a></li>
            <li><a href="#">ПРИХОЖИЕ</a></li>
            <li><a href="#">КОМОДЫ И ТУМБЫ</a></li>
            <li><a href="#">КРЕСЛА И СТУЛЬЯ</a></li>
            <li><a href="#">ГОСТИНЫЕ</a></li>
            <li><a href="#">СТОЛЫ</a></li>
            <li><a href="#">МЯГКАЯ МЕБЕЛЬ</a></li>
            <li><a href="#">ТЕХНИКА</a></li>
          </ul>
        </li>
1
0 / 0 / 0
Регистрация: 18.02.2013
Сообщений: 25
20.02.2013, 19:24  [ТС]
Цитата Сообщение от pavlinmavlin Посмотреть сообщение
Задайте первому меню второго уровня определенный id и выставьте в файле стилей для него:
CSS
1
 display:block;
Или у самого меню второго уровня добавить:
HTML5
1
style='display:block;'
Спасибо работает именно так как надо... еще бы понять как подсвечивание текущей поддиректории сделать)... чтоб всем было понятно где они находятся...
0
 Аватар для Probka
2 / 2 / 0
Регистрация: 13.01.2013
Сообщений: 10
21.02.2013, 03:23
Спасибо работает именно так как надо... еще бы понять как подсвечивание текущей поддиректории сделать)... чтоб всем было понятно где они находятся...
Буквально сегодня с такой менюшкой колдовал
Вот готовый вариант, и не нужно добавлять стиль CSS к первому пункту ибо это приводит к схлопыванию при первом клике, если нужно то лучше прописать это дело в скрипте.
Вот вам как вариант.
Добавляете в CSS класс .current
CSS
1
.current { background: #080; }
И немного дополненный скрипт - будет открыт раздел с ссылкой текущей страницы.
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
$(document).ready(function(){
    
    // Определяем совпадения URL текущей страницы и ссылок меню
    // Присваиваем к совпавшим новый класс
 
        var linkMenu = $("#nav li ul > li > a");
        linkMenu.each(function () {
        var link = $(this).attr('href');        
        var pathname = window.location.pathname;
        if(pathname == link) {$(this).parent("#nav li ul li").addClass('current');}
        });
    
        alert(window.location.pathname) //смотрим чему равен pathname, и корректируем ссылки в меню
            
        var currentLink = $("#nav li ul li.current"); // Переменная текущего пункта меню
        
        
    // Открываем раздел где найдена текущая ссылка
    // Добавляем класс к заголовку открытого раздела
 
    currentLink.each(function(){
      $(this).parent().slideToggle();
      $(this).parent().parent().children('a').addClass("open");
    }); 
    
     
    // Функция отвечающая за открытие/закрытие
    
  $("#nav > li > a").on("click", function(e){
    if($(this).parent().has("ul")) {
      e.preventDefault();
    }
    
    if(!$(this).hasClass("open")) {
      // hide any open menus and remove all other classes
      $("#nav li ul").slideUp(350);
      $("#nav li a").removeClass("open");
      
      // open our new menu and add the open class
      $(this).next("ul").slideDown(350);
      $(this).addClass("open");
    }
    
    else if($(this).hasClass("open")) {
      $(this).removeClass("open");
      $(this).next("ul").slideUp(350);
    }
  });
});
1
0 / 0 / 0
Регистрация: 18.02.2013
Сообщений: 25
21.02.2013, 13:16  [ТС]
Цитата Сообщение от Probka Посмотреть сообщение
Буквально сегодня с такой менюшкой колдовал
Вот готовый вариант, и не нужно добавлять стиль CSS к первому пункту ибо это приводит к схлопыванию при первом клике, если нужно то лучше прописать это дело в скрипте.
Вот вам как вариант.
Добавляете в CSS класс .current
CSS
1
.current { background: #080; }
И немного дополненный скрипт - будет открыт раздел с ссылкой текущей страницы.
Кликните здесь для просмотра всего текста

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
$(document).ready(function(){
    
    // Определяем совпадения URL текущей страницы и ссылок меню
    // Присваиваем к совпавшим новый класс
 
        var linkMenu = $("#nav li ul > li > a");
        linkMenu.each(function () {
        var link = $(this).attr('href');        
        var pathname = window.location.pathname;
        if(pathname == link) {$(this).parent("#nav li ul li").addClass('current');}
        });
    
        alert(window.location.pathname) //смотрим чему равен pathname, и корректируем ссылки в меню
            
        var currentLink = $("#nav li ul li.current"); // Переменная текущего пункта меню
        
        
    // Открываем раздел где найдена текущая ссылка
    // Добавляем класс к заголовку открытого раздела
 
    currentLink.each(function(){
      $(this).parent().slideToggle();
      $(this).parent().parent().children('a').addClass("open");
    }); 
    
     
    // Функция отвечающая за открытие/закрытие
    
  $("#nav > li > a").on("click", function(e){
    if($(this).parent().has("ul")) {
      e.preventDefault();
    }
    
    if(!$(this).hasClass("open")) {
      // hide any open menus and remove all other classes
      $("#nav li ul").slideUp(350);
      $("#nav li a").removeClass("open");
      
      // open our new menu and add the open class
      $(this).next("ul").slideDown(350);
      $(this).addClass("open");
    }
    
    else if($(this).hasClass("open")) {
      $(this).removeClass("open");
      $(this).next("ul").slideUp(350);
    }
  });
});
У меня сэтим скриптом при загрузке и переходах вот такая гадость вылетает:
Кликните здесь для просмотра всего текста


Добавлено через 24 минуты
ну да... ну да...
JavaScript
1
alert(window.location.pathname)
0
0 / 0 / 0
Регистрация: 18.02.2013
Сообщений: 25
21.02.2013, 15:11  [ТС]
С этим разобрался... правда при загрузке главной нужно чтоб первый раздел был открыт... но это уже датали... думаю с этим разберусь... а вот как закруглить углы всего блока... чот не доходит...

Добавлено через 1 час 34 минуты
Скрипт работает только в первом разделе... остальные схлопываются... так же меню схлопывается при переходе в товар подраздела... как бы заставит его помнить последний подраздел до нового совпадения...
0
 Аватар для Probka
2 / 2 / 0
Регистрация: 13.01.2013
Сообщений: 10
21.02.2013, 16:43
так у вас в остальных разделах ссылки как записаны?
HTML5
1
/information.php?pages_id=16
Совпадений нет , вот и не открывает. В первом разделе у вас прямые ссылки, поэтому все работает. Вам алерт с подсказкой зачем дан был чтобы посмотреть что да как.
Но в вашем случаи все тоже можно поправить.
Попробуйте так:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
$(document).ready(function(){
    
    // Определяем совпадения URL текущей страницы и ссылок меню
    // Присваиваем к совпавшим новый класс
 
    var linkMenu = $("#nav li ul > li > a");
     linkMenu.each(function () {
       var position = window.location.href;
       var link = this.href;
       var linkHahs = window.location.hash;
       var linkSearch = window.location.search;     
       if(position == link || position == link + linkHahs || position == link + linkSearch || position == link + linkSearch + linkHahs){
        $(this).parent('li').addClass('current');
       }
     });
            
        var currentLink = $("#nav li ul li.current"); // Переменная текущего пункта меню
        
        
    // Открываем раздел где найдена текущая ссылка
    // Добавляем класс к заголовку открытого раздела
 
    currentLink.each(function(){
      $(this).parent().slideToggle();
      $(this).parent().parent().children('a').addClass("open");
    }); 
    
     
    // Функция отвечающая за открытие/закрытие
    
  $("#nav > li > a").on("click", function(e){
    if($(this).parent().has("ul")) {
      e.preventDefault();
    }
    
    if(!$(this).hasClass("open")) {
      // hide any open menus and remove all other classes
      $("#nav li ul").slideUp(350);
      $("#nav li a").removeClass("open");
      
      // open our new menu and add the open class
      $(this).next("ul").slideDown(350);
      $(this).addClass("open");
    }
    
    else if($(this).hasClass("open")) {
      $(this).removeClass("open");
      $(this).next("ul").slideUp(350);
    }
  });
});
Но при этом варианте ссылки в меню должны быть записаны полностью
HTML5
1
http://domen/folder/page***
1
0 / 0 / 0
Регистрация: 18.02.2013
Сообщений: 25
21.02.2013, 17:01  [ТС]
Спасибо попробую...

Добавлено через 13 минут
Кстать при клике на разделе из товара перекидывает на главную...
0
 Аватар для Probka
2 / 2 / 0
Регистрация: 13.01.2013
Сообщений: 10
21.02.2013, 19:36
Уберите атрибут href из ссылок разделов и перехода не будет. У вас записано
HTML5
1
2
3
4
5
6
7
8
9
10
<li>
  <a align="center" href="#">
МАТЕРИАЛЫ И МЕХАНИЗМЫ
   <br/>
МЯГКАЯ МЕБЕЛЬ
  </a>
     <ul>
       <li>
       <li>
       ***
он , href , там не нужен. тег A можно использовать и без него.
0
0 / 0 / 0
Регистрация: 18.02.2013
Сообщений: 25
22.02.2013, 12:35  [ТС]
Цитата Сообщение от Probka Посмотреть сообщение
Уберите атрибут href из ссылок разделов и перехода не будет. У вас записано
Кликните здесь для просмотра всего текста

HTML5
1
2
3
4
5
6
7
8
9
10
<li>
  <a align="center" href="#">
МАТЕРИАЛЫ И МЕХАНИЗМЫ
   <br/>
МЯГКАЯ МЕБЕЛЬ
  </a>
     <ul>
       <li>
       <li>
       ***
он , href , там не нужен. тег A можно использовать и без него.
Это я попробовал сразу... но в таком случаи когда находишься в товаре то вообще никуда попасть нельзя... т.к. меню не разворачивается по клику...

Добавлено через 46 минут
Пробовал чот типа href="javascript:void(0)" или href="javascript://" не помогает...
0
0 / 0 / 0
Регистрация: 18.02.2013
Сообщений: 25
25.02.2013, 14:13  [ТС]
Ни как не выходит чтоб находясь в товаре можно было разворачивать меню... или кидает на главную или не разворачивает...
0
0 / 0 / 0
Регистрация: 18.02.2013
Сообщений: 25
04.03.2013, 16:34  [ТС]
Похоже мне тут не помогут
0
 Аватар для Soldado
901 / 833 / 198
Регистрация: 28.06.2012
Сообщений: 1,607
Записей в блоге: 4
04.03.2013, 18:22
Помогут. Запишите для первой ссылки класс и покажите соответствующий ul
HTML5
1
2
<li><a align="center" class="open" href="javascript://">КАТАЛОГ ТОВАРОВ</a>
          <ul  style="display:block">
0
0 / 0 / 0
Регистрация: 18.02.2013
Сообщений: 25
05.03.2013, 19:19  [ТС]
Цитата Сообщение от Soldado Посмотреть сообщение
Помогут. Запишите для первой ссылки класс и покажите соответствующий ul
HTML5
1
2
<li><a align="center" class="open" href="javascript://">КАТАЛОГ ТОВАРОВ</a>
          <ul  style="display:block">
Спасибо... но проблема уже давно не в этом... там ниже по теме...

Добавлено через 7 часов 12 минут
Проблема скорее всего в том что у категорий адрес формата:
сайт/index.php/имя_категории_id
а товаров:
сайт/product_info.php/название_товара_id
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.03.2013, 19:19
Помогаю со студенческими работами здесь

jQuery меню аккордеон
Проблема в следующем: Есть меню аккордеон в котором 3 раздела и на данный момент 2 из них пусты, нужно сделать так чтоб те разделы в...

Меню в стиле аккордеон
Всем привет. Помогите переделать меню http://jsfiddle.net/karpoc/tpamgqf5/13/ &lt;ul id=&quot;nav_list_first&quot; class=&quot;nav_list&quot;&gt; ...

Меню аккордеон на задержке от события hover
Доброго всем дня! У меня проблема. Некорректно работает скрипт. Я составил довольно обычный jquery-скрипт для того, чтобы в...

Написание скрипта или готовый аккордеон меню с определенными условиями
Есть задачка - создать меню-аккордеон и параллельно обычные кнопки с подсветкой активного пункта меню! В левой части сайта 2 вида меню...

Почему в IE не раскрывается аккордеон меню, а через Google Chrome и Мозиллу все работает?
почему в IE не раскрывается аккордеон меню, а через Google Chrome и Мазилу все работает. Ссылка на страничку с этим меню ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru