我需要对没有数据的所有列禁用排序。我希望使用DataTable或jQuery来做到这一点。如果我有多个表,我应该能够遍历所有表并为每列返回true或false。这样我就可以获取结果并禁用列排序。这是我到目前为止所做的,尽管代码不完整。
function detectEmptyColumn(index) {
var sStatus = [], status ='';
var colors = ['red','green','blue','yellow','purple','black','cyan','green'];
$('.data-table').eq(index).find('tbody').each(function(i) {
var self = this;
$(self).find('tr td').each(function(j) {
if (j > 0) {
$(self).find('tr').each(function(k) {
var $tableCell = $(this).find('td:visible').eq(j);
$tableCell.css('border','2px solid '+colors[j]);
var $innerWrapper = $('.inner-wrapper', $tableCell);
status = ('a', $innerWrapper).size() > 0;
sStatus[k] = status;
if (status) return false;
});
}
});
});
return status;
}
function disableEmptyColumnSorting() {
$('.data-table').each(function(index) {
var status = detectEmptyColumn(index);
});
}
这就是Datatable td的样子:
<td class="reading-level interpTRC_no_interp
firstCol
"><div class="inner-wrapper" style="position: relative;">
<span title="-5" class="sortindex"></span>
<a href="/test/test123">
<PC
<sup>F</sup>
</a>
</div></td>
答案 0 :(得分:0)
检测emtpy列比使用atm更容易:
function isColumnEmpty(index)
{
return $("tbody td").filter(function(){
return $(this).index() == index && $.trim($(this).text()).length;
}).length == 0;
}
上面的函数使用TD上的过滤器,然后检测索引并将其与传递的列的索引进行比较,并检查文本内容是否大于0.因为所有HTML标记都被过滤掉了,所以只有文本。
你使用的插件是什么,所以我可以查看如何禁用排序?