我查看了其他主题,但没有找到任何对我有用的解决方案。
我正在尝试选择HTML中的所有复选框:
<input type="checkbox" id="selectall" onchange="toggleAllWorkers(this.checked);" />ALL<br>
<input type="checkbox" class="emp" name="w0" value="1" onchange="buildPage();" />Andrey <br>
<input type="checkbox" class="emp" name="w1" value="4" onchange="buildPage();" />Brian <br>
<input type="checkbox" class="emp" name="w2" value="5" onchange="buildPage();" />Eric <br>
<input type="checkbox" class="emp" name="w3" value="3" onchange="buildPage();" />Ken <br>
<input type="checkbox" class="emp" name="w4" value="2" onchange="buildPage();" />Kerry <br>
JAVASCRIPT
function toggleAllWorkers(status) {
$("#clickmenu .emp").each( function(index) {
console.log( index + ": "+$(this).attr("checked")+' status:'+status+' Value:'+$(this).val());
$(this).attr("checked",status);
console.log( index + ": "+$(this).attr("checked"));
});
}
但它只在页面重新加载后工作两次。
答案 0 :(得分:3)
替换attr()
的所有实例:
$(this).attr("checked",status);
prop()
:
$(this).prop("checked",status);
当您更改checked
等属性时
您可以删除内联js并将事件处理程序缩短为:
$('#selectall').on('change', function() {
$("#clickmenu .emp").prop('checked', this.checked);
});
答案 1 :(得分:2)
您应该使用prop
功能。 http://api.jquery.com/prop/
function toggleAllWorkers(status) {
$('.emp').prop('checked',status);
}
同样,不需要使用each
,这可以通过一个简单的选择器来完成。