if 条件中的逻辑是倒退的;您需要根据是否在元素的类中找到检查的等级来返回真/假。试试这个:
$.fn.dataTableExt.[afnFiltering][1].push(function (oSettings, aData, iDataIndex) {
var myRowClasses = oSettings.aoData[iDataIndex].nTr.className.split(" ");
if ($('#ckb-gradeA').is(':checked')) {
return myRowClasses.indexOf('gradeA') > -1;
} else if ($('#ckb-gradeC').is(':checked')) {
return myRowClasses.indexOf('gradeC') > -1;
}
return false;
});
Example fiddle
还请注意,您可以通过在复选框本身上使用类和data 属性来使此逻辑更通用,例如:
<input type="radio" name="RadioGroup1" class="grade-check" data-grade="gradeA" checked="checked" />grade A
<input type="radio" name="RadioGroup1" class="grade-check" data-grade="gradeB" />grade B
<input type="radio" name="RadioGroup1" class="grade-check" data-grade="gradeC" />grade C
$.fn.dataTableExt.afnFiltering.push(function (oSettings, aData, iDataIndex) {
var myRowClasses = oSettings.aoData[iDataIndex].nTr.className.split(" ");
var grade = $('.grade-check:checked').data('grade');
return myRowClasses.indexOf(grade) > -1;
});
使用这种模式意味着无论添加多少个等级复选框,JS都不需要更改。
Example fiddle