#javascript #jquery #html #css
#javascript #jquery #HTML #css
Вопрос:
Я создаю этот вложенный список, чтобы показывать и скрывать элементы, но я хочу спросить, как я могу показать один список и скрыть другой, например, если пользователь нажмет на вторую тему, скроет все открытые элементы
HTML
<ul>
<li class="subject">List item 1 with subitems:
<ul id="item">
<li>Subitem 1</li>
<li>Subitem 2</li>
</ul>
</li>
<li class="subject">List item 2 with subitems:
<ul id="item">
<li>Subitem 1</li>
<li>Subitem 2</li>
</ul>
</li>
<li class="subject">List item 3 with subitems:
<ul id="item">
<li>Subitem 1</li>
<li>Subitem 2</li>
</ul>
</li>
</ul>
javascript
$(function(){
// $("ul li").children().slideDown("slow");
$(".subject").click(function(){
$(this).find("#item").slideToggle("slow");
});
})
CSS
#item
{
display: none;
}
Комментарии:
1. Дублировать идентификатор — не очень хороший способ.
Ответ №1:
$(".subject").click(function(){
$(this).find("#item").slideToggle("slow");
$(this).siblings().children('ul').slideUp();
});
или
$(".subject").click(function () {
$(this).find("#item").slideToggle("slow")
.end().siblings().children('ul').slideUp();
});
Ответ №2:
Я исправил вашу разметку. Ваши идентификаторы всегда должны быть уникальными; в противном случае используйте классы.
$(function(){
$(".subject").click(function(){
$('ul.item').not( $(this).find('ul.item') ).slideUp("slow");
$(this).find('ul.item').slideDown('slow');
});
});