2010-11-11 57 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