Jquery所有复选框选择仅适用一次

时间:2013-08-23 19:27:58

标签: jquery

我查看了其他主题,但没有找到任何对我有用的解决方案。

我正在尝试选择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"));
    });
}

但它只在页面重新加载后工作两次。

2 个答案:

答案 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,这可以通过一个简单的选择器来完成。