最后一个孩子点击不变
当我选择框2
时,我想让边框变黑。
另一次点击它应该回到黄色。最后一个孩子点击不变
第一次点击右转,但第二次点击保持黑色。 我可以通过添加另一个类来解决这个问题,但我不想。
我该怎么办?
这是我的代码:
<div class="aa">
<div class="bb">1</div>
<div class="cc"></div>
</div>
<div class="aa">
<div class="bb">2</div>
<div class="cc"></div>
</div>
$('.bb:last').addClass('yellow');
$('.bb').click(function() {
$(this).next('.cc').fadeToggle();
if (!$('.cc:last').is(':hidden')) {
$('.bb:last').addClass('black');
} else {
$('.bb:last').removeClass('black');
$('.bb:last').addClass('yellow');
}
});
.bb {
background:red;
width:90px;
height:30px
}
.cc {
background:blue;
width:90px;
height:30px;
display:none;
}
.yellow {
border:3px solid yellow;
}
.black {
border:3px solid black;
}
样品fiddle
入住这fiddle
你基本上需要删除类,如果它有。
$('.bb:last').addClass('yellow');
$('.bb').click(function() {
$(this).next('.cc').fadeToggle();
if (!$('.cc:last').is(':hidden')) {
if ($('.bb:last').hasClass('black')) {
$('.bb:last').removeClass('black');
} else {
$('.bb:last').addClass('black');
}
} else {
$('.bb:last').addClass('yellow');
}
});
简单多了:
$('.bb:last').addClass('yellow');
$('.bb').click(function(e) {
$(this).next('.cc').fadeToggle();
if(e.target == $('.bb:last')[0])
$(this).toggleClass('yellow black');
});
http://api.jquery.com/hasClass/
http://api.jquery.com/toggleClass/
很简单的解决方案。只需使用.toggleClass('yellow black')
即可。 toggleClass()
将照顾你的一切。设置的空格分隔列表中的任何类都将被清除,反之亦然。只影响最后.bb
,你可以把它放在它自己的处理程序:
$('.bb:last').addClass('yellow').click(function() {
$(this).toggleClass('yellow black');
});
$('.bb').click(function() {
$(this).next('.cc').fadeToggle();
});
在您的演示中,第一个元素会随着类和边框而变得疯狂,恐怕这不是OP所需要的。 –
疯了吗?也许我不清楚OP想要什么。如果他们不希望第一个改变边框样式,那么很容易,就像你在例子中展示的那样。您也可以使用单独的处理程序,就像我更新的示例中一样。 –
+1现在很好 –
非常感谢您! 'hasClass',以前从未知道。 – olo