2011-06-01 65 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(); 
});