#jquery
#jquery
Вопрос:
Переключение классов работает отлично, но братья и сестры нет.
Я что-то пропустил, и класс «corrente» не удаляется, если я нажму на другую кнопку h1.
Структурный код:
$(document).ready(function(){
$("ul.box").addClass(" invisivel");
$("#menu a").click(function(){
$(this).next("ul.box")
.slideToggle("slow")
.siblings("ul.box:visible")
.slideUp("slow");
$(this).children("h1")
.toggleClass("corrente")
.siblings("h1")
.removeClass("corrente");
return false;
});
});
Html-код:
<div id="menu">
<a href="">
<h1 class="link-titulo">Oficina da África</h1>
</a>
<ul class="box">
<li>xxx</li>
</ul>
<a href="">
<h1 class="link-titulo">Calendário/Currículo</h1>
</a>
<ul class="box">
<li>xxx</li>
</ul>
</div>
Комментарии:
1.
$(this).children("h1").toggleClass("corrente") .end().siblings("h1").removeClass("corrente");
2. без соответствующего html мы не сможем вам помочь
Ответ №1:
После вызова .children()
вы теперь работаете с этим новым набором элементов, поэтому .siblings()
затем вызывающий получает доступ к братьям и сестрам дочерних элементов. Вы можете использовать jQuery.fn.end()
, чтобы вернуться к предыдущему набору:
$(this).children("h1").toggleClass("corrente")
.end() // <--
.siblings("h1").removeClass("corrente");
Комментарии:
1. Подумайте: это правильно, что у a
h1
будет другойh1
брат или сестра.2. Но тогда код был бы очень странным:
.children('h1')
уже имеет все элементы «h1» этого родительского элемента,.siblings('h1')
что привело бы к набору точно таких же элементов.
Ответ №2:
попробуйте это и, если возможно, добавьте ваш HTML-код
$(document).ready(function(){
$("ul.box").addClass(" invisivel");
$('#menu a').each(function() {
$(this).click(function() {
$(this).next("ul.box").slideToggle("slow")
.siblings("ul.box:visible").slideUp("slow");
$(this).children("h1").toggleClass("corrente")
.siblings("h1").removeClass("corrente");
return false;
});
});
});
Ответ №3:
Попробуйте заменить
.siblings("h1").removeClass("corrente");
с
.next("h1").removeClass("corrente");