2010-09-06 104 views
4

我是一個jQuery noob,似乎我總是會一直試圖讓這個簡單的東西工作。jQuery:如果複選框被選中,toggleClass

我想要的是,當複選框被選中時,用display: none;隱藏div。

這是jFiddle的例子,我正在搞一堆。

感謝您的幫助,或其他解決方案:)

回答

11

我卡里姆同意,如果你只需要隱藏/顯示,使用.toggle(bool),如果你的例子被簡化,你需要一個類,使用.toggleClass("class", bool),像這樣:

$(function(){ 
    $("#checkbox4").change(function() { 
    $("#checkout-shipping-address").toggleClass("show-hide", this.checked) 
    }).change(); 
});​ 

You can test it out here,最後的.change()調用是使頁面首次加載時的狀態匹配,here's what I mean

+0

哇,謝謝!很好的解釋和謝謝,例如。變更電話正是我所追求的。 :) – Kyle 2010-09-06 13:08:19

+0

我的印象是,IE不能處理複選框上的更改,並且在使用空格鍵在某些瀏覽器中選中/取消選中時,它不一定會被解僱。相反,我會使用'click'並且用'triggerHandler('click')'設置初始狀態。請看我的答案。 – karim79 2010-09-06 13:16:13

+0

@ karim79 - 這是我第一次聽說IE和「改變」......它在1.4.2之前有*冒泡*變化事件(造成'.live()'問題),但是沒有實際的複選框,我見過或聽說過。我的上面的演示在IE8/7中沒有任何問題,我沒有6個方便的測試,但我沒有看到它會失敗,'onchange'在API中處於非常基本的級別:) – 2010-09-06 13:21:21

0

試試下面的代碼:

$(function(){ 
    $('#checkbox4').change(function() { 
     $("#checkout-shipping-address").toggleClass("show-hide"); 
    }); 
}); 

您需要將changeclick事件,以反應進行綁定。

6

有沒有需要一個show-hide類。只是傳遞一個布爾值切換,並通過使用triggerHandler設置div的初始狀態,它可以讓你火綁定到一個元素的事件處理程序,而不會實際影響該元素的狀態:

$(document).ready(function() { 
    $("#checkbox4").click(function() { 
     $("#checkout-shipping-address").toggle(this.checked); 
    }).triggerHandler('click'); 
}); 

演示:http://jsfiddle.net/nQnDG/3/