切换复选框设置

Toggle Checkbox settings

我有一个 table 个元素,每个元素都有一行有一个选择加入或退出的复选框。由于项目列表可能很长,我想提供一个 "global" 复选框来勾选所有复选框或根据此全局复选框的设置取消勾选它们。 我已经创建了 jQuery 代码来完全做到这一点,但不幸的是只有一次。我无法一次又一次地切换设置。任何想法为什么?谢谢!

这是我的代码:

jQuery('#ci-firmware-assign-toggle-checkbox').click(function(){
    if(jQuery('#ci-firmware-assign-toggle-checkbox').is(":checked")) {
        jQuery('tbody .ci-firmware-assign-checkbox').each(function(){
            if(!jQuery(this).attr("checked")) {
                jQuery(this).attr('checked', true);
            };
        });
    } else {
        jQuery('tbody .ci-firmware-assign-checkbox').each(function(){
            if(jQuery(this).attr("checked")) {
                jQuery(this).attr('checked', false);
            };
        });
    }
});

我是这样做的

jQuery('#ci-firmware-assign-toggle-checkbox').click(function(){   
if(jQuery('#ci-firmware-assign-toggle-checkbox').is(":checked")) {
    
   $( '.ci-firmware-assign-checkbox' ).prop( "checked", function() {
        return true;
    })
    
} else {
   $( '.ci-firmware-assign-checkbox' ).prop( "checked", function() {
        return false;
    })
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id='ci-firmware-assign-toggle-checkbox' type='checkbox' />Toggle All<br/>
<input id='1' type='checkbox' class='ci-firmware-assign-checkbox' />Checkbox 1<br/>
<input id='2' type='checkbox' class='ci-firmware-assign-checkbox' />Checkbox 2

它似乎工作正常

jQuery('#ci-firmware-assign-toggle-checkbox').change(function(){   
   $('.ci-firmware-assign-checkbox').prop("checked", $(this).is(":checked"))
});
jQuery('#ci-firmware-assign-toggle-checkbox').click(function(){
    if(jQuery('#ci-firmware-assign-toggle-checkbox').is(":checked")) {
        jQuery('tbody .ci-firmware-assign-checkbox').each(function(){
            if(!jQuery(this).**prop**("checked")) {
                jQuery(this).**prop**('checked', 'checked');
            };
        });
    } else {
        jQuery('tbody .ci-firmware-assign-checkbox').each(function(){
            if(jQuery(this).**prop**("checked")) {
                jQuery(this).**removeProp**('checked');
            };
        });
    }
});

属性 -> HTML - 仅在 html 中进行更改

属性 -> DOM - 在 dom javascript 状态对象中进行更改