单击按钮时,此代码应清除复选框。如果删除<form></form>
代码,它会有效,但我认为.find()
应该找到所有后代?
<script type="text/javascript">
$(document).ready(function(){
var clearCheckboxes = function() {
$('.outerbox').find('input').each(function() {
$(this).attr('checked', false);
});
}
$('input.myButton').click(clearCheckboxes);
});
</script>
<div class="outerbox">
<form>
<input type="checkbox" checked="" /> checkbox1
<input type="checkbox" checked="" /> checkbox2
</form>
</div>
<input class="myButton" value="clear checkboxes now" type="button"/>
答案 0 :(得分:2)
此代码适用于我:http://jsfiddle.net/CgsEu/
无论如何,如果您使用的是最新的jQuery,请尝试将.attr
更改为.prop
。此外,不需要.each
。 .attr
和.prop
处理jQuery对象中的所有元素。
var clearCheckboxes = function() {
$('.outerbox').find('input').prop('checked', false)
}
DEMO:http://jsfiddle.net/CgsEu/1/
如果还有其他输入,请尝试将.find
限制为仅复选框。
var clearCheckboxes = function() {
$('.outerbox').find('input:checkbox').prop('checked', false)
}
答案 1 :(得分:1)
没有必要使用each(),你已经有了一个元素的集合,可以将更改应用到所有元素,如下所示:
var clearCheckboxes = function() {
$('input', '.outerbox').attr('checked', false);
}
$('input.myButton').click(clearCheckboxes);
在attr()上使用prop()有很多建议,这可能是合理的建议。
根据W3C表单规范,checked属性为a boolean属性,表示相应的属性为true 该属性完全存在 - 即使例如属性 没有值或空字符串值。首选 跨浏览器兼容的方式来确定是否选中了复选框 使用以下方法之一检查元素属性的“truthy”值 以下内容:
if(elem.checked)
if($(elem).prop(“checked”))
if($(elem).is(“:checked”))
为了保持向后兼容性,使用.attr()方法 jQuery 1.6.1+将为您检索和更新属性,因此没有代码 对于布尔属性,需要更改为.prop()。 然而,检索已检查值的首选方法是prop()。
答案 2 :(得分:1)
$(document).ready(function(){
var clearCheckboxes = function() {
$('.outerbox').find('input[type="checkbox"]').each(function(){
$(this).prop('checked', false);
});
}
$('input.myButton').click(clearCheckboxes);
});
<强>更新强>
$('.outerbox').find('input[type="checkbox"]').prop('checked', false);
或
$('.outerbox input:checkbox').prop('checked', false);
答案 3 :(得分:0)
使用prop,例如
$(this).prop('checked', false);
而不是attr
答案 4 :(得分:0)
var clearCheckboxes = function() {
$('input[type="checkbox"]', '.outerbox').prop('checked', false);
}
$('input.myButton').click(clearCheckboxes);