最后一个孩子点击不变

问题描述:

当我选择框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'); 
    } 
}); 
+1

非常感谢您! 'hasClass',以前从未知道。 – olo

简单多了:

LIVE DEMO

$('.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/

+1

+1我只是关于帖子相同...与切换:) – PSL

+1

@PSCoder,这意味着我们都喜欢简单:) –

+1

Gnarf,秒到晚。 – k0pernikus

很简单的解决方案。只需使用.toggleClass('yellow black')即可。 toggleClass()将照顾你的一切。设置的空格分隔列表中的任何类都将被清除,反之亦然。只影响最后.bb,你可以把它放在它自己的处理程序:

$('.bb:last').addClass('yellow').click(function() { 
    $(this).toggleClass('yellow black'); 
}); 
$('.bb').click(function() { 
    $(this).next('.cc').fadeToggle(); 
}); 

​​

+0

在您的演示中,第一个元素会随着类和边框而变得疯狂,恐怕这不是OP所需要的。 –

+0

疯了吗?也许我不清楚OP想要什么。如果他们不希望第一个改变边框样式,那么很容易,就像你在例子中展示的那样。您也可以使用单独的处理程序,就像我更新的示例中一样。 –

+0

+1现在很好 –