Динамически разворачивающийся/сворачивающийся список
Здравствуйте. Делаю разворачивающийся вложенный список (с jQuery). При нажатии на span.expand разворачивается/сворачивается следующий список <ul>, вложенный в этот же <li>. В общем, разметка такая:
<!DOCTYPE html>
<head></head>
<body>
<ul class="jlevel_1">
<li><span class="expand">Cat1</span>
<ul class="jlevel_2 submenu">
<li>Subitem Cat1 Item1</li>
<li>Subitem Cat1 Item2</li>
<li><span class="expand">Subitem Cat1 Item3</span>
<ul class="jlevel_3 submenu">
<li>Subitem Cat1 Item3 subitem1</li>
<li>Subitem Cat1 Item3 subitem1</li>
</ul>
</li>
</ul>
</li>
<li><span class="expand">Cat2</span>
<ul class="jlevel_2 submenu">
<li>Subitem Cat2 Item1</li>
<li>Subitem Cat2 Item2</li>
</ul>
</li>
</ul>
</body>
</html>
JS такой:
<script type="text/javascript">
jQuery(document).ready(function(){
jQuery("ul.submenu").hide();//Свернули все вложенные списки
jQuery("span.expand").click(function(){
var e = jQuery(this).next();
e.slideToggle("fast");//Сворачиваем/разворачиваем
});
});
</script>
Мне необходимо чтобы при разворачивании одного элемента, тот, который был развернут до этого, свернулся (это касается и списков третьего уровня jlevel_3). Что-то типа эффекта Accordeon На самом деле вложенных списков много, и элементов в них тоже. jQuery ковыряю очень недолго, поэтому need help. |
UP :(
Мне бы не то чтобы готовый код, просто подсказку, как решить проблему малой кровью, т.е. не изменяя разметки (это важно). |
.submenu {
display: none;
}
.submenu.active {
display: block;
}
$('.expand').click(function() {
$('.jlevel_1').find('.active').removeClass('active');
$(this).next().toggleClass('active');
});
|
SlavaPav,
Все здорово, только при открытии <ul class="jlevel_3"> родительский список сворачивается =( Но я смысл понял, спасибо за ответ |
| Часовой пояс GMT +3, время: 02:23. |