Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.03.2013, 07:00
Аватар для Pothead
Новичок на форуме
Отправить личное сообщение для Pothead Посмотреть профиль Найти все сообщения от Pothead
 
Регистрация: 26.03.2013
Сообщений: 7

Индикатор меню актив/неактив
Доброго всем времени суток.
Заранее попрошу камнями не кидаться, если что, я в js только осваиваюсь пока.

Суть вопроса такова:
имеется вертикальное аккордеон-меню с индикаторами активного/неактивного родительского пункта меню. В свернутом виде пункт меню, имеющий дочерние подпункты обозначается стрелкой, указывающей вправо. Нажимаем на пункт, выезжает н-ное кол-во подпунктов, а индикатор (стрелка) уже указывает вниз. Кликаем на нем еще раз, подпункты сворачиваются, и стрелка возвращается в исходное состояние (т.е. указывает вправо).

На данном этапе работает почти все, но при единожды активизированном пункте меню, его стрелка-индикатор остается в активном состоянии, даже если свернуть его дочерние подпункты.
По идее должны быть все просто, но т.к. пока опыта мало, не могу толково реализовать возврат стрелки в исходное положение.

<div id="firstpane" class="menu_list">
          <h3 class="menu_head">Пункт 1</h3>

          <div class="menu_body">
             <a href="#">Подменю 1</a> <a href="#">Подменю 2</a> <a href="#">M200</a>
          </div>

          <h3 class="menu_head">Пункт 2</h3>

          <div class="menu_body">
            <a href="#">Подменю 1</a> <a href="#">Подменю 2</a> <a href="#">Подменю 3</a>
          </div>

          <h3 class="menu_headlnk">Пункт 3</h3>
        </div>


CSS:
Код:
.menu_head {
	padding: 5px 10px;
	cursor: pointer;
	position: relative;
	margin:1px;
    font-weight:bold;
    background: url(img/menu_cat_closed.png) center left no-repeat;
	color:#000;
}
.menu_headlnk {
	padding: 5px 10px;
	cursor: pointer;
	position: relative;
	margin:1px;
    font-weight:bold;
    background: none;
	color:#000;
}
.menu_body {
	display:none;
	  border:none;
	  margin:1px;
}
.menu_body a{
letter-spacing:0;
  display:block;
  color:#555;
  margin-left:6px;
  background:none;
  padding:4px;
  font-weight:bold;
  text-decoration:none;
  
}
.menu_body a:hover{
  color: #ffcc00;
  text-decoration:none;
  }
$(document).ready(function()
  {
        $("#firstpane h3.menu_head").click(function()
    {
                $(this).css({backgroundImage:"url(img/menu_cat_open.png)"}).next("div.menu_body").slideToggle(300).siblings("div.menu_body").slideUp("slow");
				
       
        });
  });


При активном пункте, к тегу h3.menu_head добавляется
style="background-image: url(img/menu_cat_open.png);


а к диву .menu_body
style="display: block;"

(у неактивного пункта display: none)

По логике, думал так можно сделать:
если у div.menu_body display - none, то у h3.menu_head делаем background-image: url(img/menu_cat_closed.png), иначе наоборот.

Ниче не получилось, вероятно из-за неправильной реализации.

Помогите плиз, буду оочень признателен
Ответить с цитированием
  #2 (permalink)  
Старый 26.03.2013, 11:37
Аватар для zilker
Профессор
Отправить личное сообщение для zilker Посмотреть профиль Найти все сообщения от zilker
 
Регистрация: 30.07.2011
Сообщений: 189

Так вы же предоставьте код, который должен это делать, а мы вам на ошибки укажем.
Вообще лучше сделать 2 класса - свернутый и развернутый, с соответствующими картинками в бэкграунде, а по клику менять их используя .toggleClass(), раз уже jQuery используете.
Ответить с цитированием
  #3 (permalink)  
Старый 26.03.2013, 11:58
Аватар для Pothead
Новичок на форуме
Отправить личное сообщение для Pothead Посмотреть профиль Найти все сообщения от Pothead
 
Регистрация: 26.03.2013
Сообщений: 7

Большое спасибо)
Сделал так:

создал класс
.on {
	padding: 5px 10px;
	cursor: pointer;
	position: relative;
	margin:1px;
    font-weight:bold;
  
	color:#000;
    background: url(img/menu_cat_open.png) center left no-repeat;

}


и переделал

$(this).toggleClass("on").next("div.menu_body").slideToggle(300).siblings("div.menu_body").slideUp("slow");


Работает)
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Открыть слайд (раздел) текущего пункта меню Demath Элементы интерфейса 8 18.07.2012 02:49
Подсветка выделенного элемента меню ajax-сайта crayday AJAX и COMET 0 11.05.2012 12:25
скрипт работает только на последнем пункте меню walking Элементы интерфейса 0 08.01.2012 14:56
Выпадающие меню like2dev Общие вопросы Javascript 9 21.10.2011 14:09
Проблема с аккордионом и меню Tie ExtJS 3 01.09.2011 14:36