1

我查看了其他线程,但没有找到任何适合我的解决方案。

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

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

4

2 回答 2

3

替换所有实例attr()

$(this).attr("checked",status);

prop()

$(this).prop("checked",status);

当你改变一个像checked.
您可以删除内联 js 并将事件处理程序缩短为:

$('#selectall').on('change', function() {
    $("#clickmenu .emp").prop('checked', this.checked);
});
于 2013-08-23T19:28:54.313 回答
2

您应该使用该prop功能。http://api.jquery.com/prop/

function toggleAllWorkers(status) {
    $('.emp').prop('checked',status);
}

同样,不需要使用each,这可以通过一个简单的选择器来完成。

于 2013-08-23T19:31:07.217 回答