2012-12-19 57 views
2

我需要對所有沒有數據的列進行排序。我正在尋找使用DataTable或jQuery來做到這一點。如果我有多個表格,我應該可以遍歷所有這些表格,併爲每列返回true或false。這樣我就可以得到結果並禁用列排序。儘管代碼不完整,但這是迄今爲止我所擁有的。禁用使用DataTable或jQuery對空列進行排序

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); 
}); 

} 

這是TD如何DataTable的樣子:

<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"> 

      &lt;PC 

       <sup>F</sup> 
     </a> 
</div></td> 
+0

在初始化數據表之前,您是否知道哪些列不會有數據?如果是這樣,你可以在'aoColumns'部分應用'bsortable:false'屬性。 [DataTables Columns](http://datatables.net/usage/columns) – War10ck

+0

列中的數據根據​​某些條件進行更改。所以它總是不同的。 – user1916494

回答

0

檢測的emtpy列是比較容易的方式,那麼你做的ATM:

function isColumnEmpty(index) 
{ 
    return $("tbody td").filter(function(){ 
     return $(this).index() == index && $.trim($(this).text()).length; 
    }).length == 0;   
} 

以上函數使用過濾器上的TD ,然後檢測索引並將其與傳遞的列的索引進行比較,並檢查文本內容是否大於0.由於所有HTML標記都已過濾掉,因此您只能獲得文本。

你使用什麼插件,所以我可以看看如何禁用排序?

+0

我正在使用DataTable for jQuery。你的函數檢查單個單元而不是整個列,還需要檢查是否存在錨標記。 – user1916494

+0

此功能將檢查整個列。因爲我循環了所有的TD。 – Niels

+0

我需要檢查單個列,然後返回true(1)或false(0)。我有多個表。 – user1916494

相關問題