所以,我在这里挣扎。即使我点击导航,它也会打开嵌套列表并将类添加到父列表中。 这部分几乎可以工作,问题是它将该类添加到父列表中的所有元素。
<ul>
<li><div><p class="hidden">Test 1</p>
<ul class="shown">
<li>
<a href="#"><p>Inner 1</p></a>
</li>
</ul>
</div>
</li>
<li><div><p class="hidden">Test 2</p>
<ul class="shown">
<li>
<a href="#"><p>Inner 2</p></a>
</li>
</ul>
</div>
</li>
</ul>
<ul>
jque
$(document).ready(function () {
$('.shown').hide();
$('.hidden').click(function () {
var $answer = $(this).next('.shown');
if ($answer.is(':hidden')) {
$answer.show();
$('.hidden').addClass('color1');
} else {
$answer.hide();
$('.hidden').removeClass('color1');
}
});
});
CSS
.color1{
background:red;
}
的jsfiddle
答案 0 :(得分:1)
这里添加和删除color1类时将$(&#39; .hidden&#39;)更改为$(this)..因为$(&#39; .hidden&#39;)会将类添加到所有元素.hidden class
Jsfiddle:https://jsfiddle.net/6moznpbr/
$(document).ready(function () {
$('.shown').hide();
$('.hidden').click(function () {
var $answer = $(this).next('.shown');
if ($answer.is(':hidden')) {
$answer.show();
$(this).addClass('color1');
} else {
$answer.hide();
$(this).removeClass('color1');
}
});
});
答案 1 :(得分:1)
在您的点击处理程序中,您要引用$(this)
而不是$('.hidden')
- 后者表示所有元素与类hidden
:
$('.hidden').click(function () {
var $answer = $(this).next('.shown');
if ($answer.is(':hidden')) {
$answer.show();
$(this).addClass('color1');
} else {
$answer.hide();
$(this).removeClass('color1');
}
});