我在一个页面上有几个 PrimeFaces 复选框。如果单击主复选框,则应选中/取消选中所有其他复选框。使用纯 HTML 复选框,这将是一个简单的问题。但是因为 PrimeFaces 不显示复选框本身,而是显示图像,所以下面的 JavaScript 代码不起作用:
<script type="text/javascript">
$(document).ready(function() {
var masterCheckbox = $(".ui-chkbox.master :checkbox");
var slaveCheckboxes = $(".ui-chkbox:not(.master) :checkbox");
updateMaster();
masterCheckbox.change(updateSlaves);
slaveCheckboxes.change(updateMaster);
function updateMaster() {
var allSlavesChecked = true;
slaveCheckboxes.each(function() {
if (!$(this).is(':checked')) {
allSlavesChecked = false;
}
});
masterCheckbox.attr("checked", allSlavesChecked);
}
function updateSlaves() {
var masterChecked = masterCheckbox.is(":checked");
slaveCheckboxes.each(function() {
$(this).attr("checked", masterChecked);
});
}
});
</script>
我知道我可以使用 PrimeFaces widgetVar 来切换复选框,但我不知道如何使用 JavaScript 获取 PrimeFaces 小部件对象。我认为 RichFaces 将 component 属性添加到 DOM 元素,但 PrimeFaces 没有。有人知道这个问题的解决方案吗?