2010-11-11 35 views
1

我需要從複選框到我的div的狀態。 div正在包裝複選框。獲取從複選框到div的狀態

<div id="checkWrapper"> 
<input type="checkbox" /> 
</div> 

類似的東西。當用戶點擊複選框並且它被檢查狀態時,我需要獲得一些類到#checkWrapper div。類可以是任何東西,也許類似「檢查」。

jQuery的可能嗎?這很容易嗎?

回答

2

您可以使用:checked選擇與.length,看它是否找到任何匹配,就像這樣:

var is_checked = $("#checkWrapper :checkbox:checked").length > 0; 

對於click處理程序,你可以這樣做:

$("#checkWrapper :checkbox").change(function() { 
    $("#checkWrapper").toggleClass("checked", this.checked); 
}); 

這將增加的checked類,當它被檢查,刪除它時,它不是。如果您需要與許多元素要做到這一點,使用像class="checkWrapper"一類.closest(),就像這樣:

$(".checkWrapper :checkbox").change(function() { 
    $(this).closest(".checkWrapper").toggleClass("checked", this.checked); 
}); 
+0

的變化確實有一些問題與IE瀏覽器?我想我之前可能會遇到一些問題。我可能記得錯了,所以我會放棄它。 – penissiomo 2010-11-11 20:24:39

+0

@penissiomo - '變化'在IE瀏覽器中遇到了問題,在較老的(1.4.2版本)jQuery版本中冒泡,現在不是問題...並且以上代碼都不依賴於冒泡:) – 2010-11-11 20:35:08

2
$('#checkWrapper :checkbox').live('change', function(){ 
    $(this).parent().toggleClass('checked', this.checked); 
}); 
+0

這是一個非常糟糕的方式來做到這一點,它是一個昂貴的初始選擇器,不允許其他類,並且在獲取'checked'屬性方面效率非常低 - 編輯後的版本並沒有真正解決主要問題。 – 2010-11-11 20:14:35

+0

是的,我的第一次通過並不是最好的方式,但我已經清理它 – Jason 2010-11-11 20:19:07

+0

使用'.closest()'可能不是他想要的......在他的HTML例子中,似乎'.parents()'是更多他想要的東西 – Jason 2010-11-11 20:20:24

相關問題