2011-06-01 42 views
1

我试图隐藏一个段落,当复选框未选中时,现在我只能在显示它时进行检查。复选框未选中时无法隐藏段落

这里是我的jQuery:

$('.pharmacy').click(function(){ 
$('.pcsoc').show(); 
}); 

我能做些什么隐藏的段落时,不被选中?

回答

5

绑定到变化事件,而不是:

$('.pharmacy').change(function(e){ 
    $('.pcsoc').toggle(); 
}); 

或者你可以检查是否​​,使自己隐藏/显示(更多防弹)。

$('.pharmacy').change(function(e){ 
    if ($(this).is(':checked')) 
    $('.pcsoc').show(); 
    else 
    $('.pcsoc').hide(); 
}); 
+1

演示以及:http://jsfiddle.net/bradchristie/TPuB8/ - 和()是这里的版本:http://jsfiddle.net/bradchristie/TPuB8/1/ – 2011-06-01 18:53:28

3

尝试:

$('.pharmacy').click(function(){ 
    $('.pcsoc').toggle(); 
}); 
+0

注意,使用'切换()'可能可能导致选中/取消选中状态走出去与显示/隐藏状态同步。 – 2011-06-01 18:53:41

2

你需要如果选中或取消选中测试:

$('.pharmacy').click(function(){ 
    if ($(this).is(':checked')) { 
    $('.pcsoc').show(); 
    } 
    else $('.pcsoc').hide(); 
}); 

编辑它可能会更好布拉德·克里斯蒂的建议绑定到change()方法。

+0

我喜欢这个。在表单打开时无法预测check_box的状态的可能情况下,弹性更大。 – sscirrus 2011-06-01 18:53:32

+0

你需要将'$(this)'包装在一个jQuery对象中以访问'.is()' – 2011-06-01 18:54:28

1

您可以检查复选框被选中,并做出适当的反应:

$('.pharmacy').click(function() { 
    if(this.checked) 
     $('.pcsoc').show(); 
    else 
     $('.pcsoc').hide(); 
});