我有一个函数可以检查我要添加到.not(:disabled)的所有复选框,但是当我在.is之后添加它时抛出错误。如何防止选中禁用的复选框?
function selectAllCheckBoxes( table, checkBoxId )
{
$( 'input', table.fnGetNodes()).prop( 'checked', $( '#' + checkBoxId ).is( ':checked' ).not(':disabled' )
}
答案 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>