Показать сообщение отдельно
  #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), иначе наоборот.

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

Помогите плиз, буду оочень признателен
Ответить с цитированием