检查所有功能检查所有复选框,甚至禁用复选框

时间:2019-09-27 06:28:53

标签: jquery

我有一个函数可以检查我要添加到.not(:disabled)的所有复选框,但是当我在.is之后添加它时抛出错误。如何防止选中禁用的复选框?

function selectAllCheckBoxes( table, checkBoxId )
{
    $( 'input', table.fnGetNodes()).prop( 'checked', $( '#' + checkBoxId ).is( ':checked' ).not(':disabled' )
}

2 个答案:

答案 0 :(得分:0)

  

在引发.is错误后添加了它

.is返回一个布尔值,因此不能再将jquery过滤器函数链接到该布尔值。

这将导致错误:

$(..).is(":checked").not(":disabled")

但是,这只是部分问题,因为您的要求是:

  

如何防止选中禁用的复选框

因此:disabled检查需要与您要检查的复选框相对应,而不是用于检查是否应检查的复选框

即,这里:

$('input').not(":disabled").prop(...

更新的代码

function selectAllCheckBoxes(table, checkBoxId)
{
    $('input', table.fnGetNodes())
        .not(":disabled")
        .prop('checked', $('#' + checkBoxId).is(':checked')
}

答案 1 :(得分:0)

如前所述,Is返回一个布尔值。由于您不使用布尔值,因此可以考虑使用过滤器。

$('input').filter(':checked' ).not(':disabled').each(function(){
  console.log($(this).attr('id'))
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input id="checkbox1" type="checkbox" checked disabled>
<input id="checkbox2" type="checkbox" checked>
<input id="checkbox3" type="checkbox" checked disabled>
<input id="checkbox4" type="checkbox" checked>