所以我有以下内容:
var box = $(".MyCheckBox");
if (box[0].checked)
{
// Do something
}
else
{
// Do something else
}
使用过滤器还是有更好的方法吗?
我知道我可以去:
$(".MyCheckBox")
.filter(function(index) {
return this.checked;
})
.each(function() {
// do something
});
但是我需要在else语句中做点什么...这样做更容易吗?谢谢!
答案 0 :(得分:5)
attr('checked')无论如何都会返回第一个元素的选中值,所以没有[0] malarky。
if ($(".MyCheckBox").attr('checked')) {
// Do something
} else {
// else
}
答案 1 :(得分:5)
您可以使用内置的:checked
选择器:
$(".MyCheckBox:checked").each(function() {
//Do something with checked ones..
});
$(".MyCheckBox:not(:checked)").each(function() {
//Do something with unchecked ones..
});
或者在每个类似于你拥有的内容中进行过滤:
$(".MyCheckBox").each(function() {
if($(this).is(":checked")) {
//Do something with checked ones..
} else {
//Do something with unchecked ones..
}
});
或者,如果您想要切换一个类,然后使用不同的方法,这会将active
类提供给已检查的类:
$(".MyCheckBox").each(function() {
$(this).toggleClass("active", $(this).is(":checked"));
});
<强>更新强>
根据评论,如果你只想要原始速度:
$(".MyCheckBox").each(function() {
if(this.checked) {
//Do something with checked ones..
} else {
//Do something with unchecked ones..
}
});
答案 2 :(得分:2)
我会选择Nick上面的最新答案,但我建议您完成选择。即,
$('input.myCheckBox').each(function(){
// tralalala...
}
...只是因为它使你的初始jQuery选择更快一些。我的意思是,因为我们正在争论速度和所有。 ^ _ ^