2011-09-08 57 views
1

我知道使用dataTables plugin切換一列中的能見度只有這樣做:切換欄的可見性使用類

function fnShowHide(iCol){ 
    /* Get the DataTables object again - this is not a recreation, just a get of the object */ 
    var oTable = $('#content-table-redesign').dataTable(); 

    var bVis = oTable.fnSettings().aoColumns[iCol].bVisible; 
    oTable.fnSetColumnVis(iCol, bVis ? false : true); 
} 

但有可能使用ID或類來獲取列或另一個意思?

事情是我也允許用戶拖放列的意願,如果我去索引然後他們可能會點擊隱藏「ID」(第0列),但他們把它移動到別的地方,現在什麼位於0的位置,而不是「id」位置。

要麼是這樣,要麼讓某個插件仍然鏈接列索引,無論它移動到哪裏。

編輯

這裏的HTML身體基本上是相同的(每個TD具有相同的類作爲它的日父)

<table id="content-table-redesign" class="display"> 
      <thead> 
       <tr> 
        <th class="ID">ID</th> 
        <th class="Name">Name</th> 
        <th class="Domain">Domain</th> 
        <th class="email">email</th> 
       </tr> 
      </thead> 
      <tbody> 

我在尋找類,因爲一個包含那個類是那個將被刪除的那個和那個tbody一樣

回答

4

我認爲最簡單的答案就是dataTables本身不支持這個,你需要手動拉索引在課堂上你自己。幸運的是,這很容易!

var iCol = $('#content-table-redesign tr').first().children('td.yourclass').index(); 
var bVis = oTable.fnSettings().aoColumns[iCol].bVisible; 
oTable.fnSetColumnVis(iCol, bVis ? false : true); 

當然,根據您的表格結構,您的選擇器可能需要使用th.yourclass。因此,它可能讀來代替:

$('#content-table-redesign thead tr').children('th.yourclass').index(); 

UPDATE

根據您的HTML,這裏是你的選擇:

$('#content-table-redesign thead tr').children('th.ID').index(); 

你會注意到在控制檯登錄 「0」:http://jsfiddle.net/YeAHB/

+0

我總是得到一個-1的索引任何想法爲什麼?不管它是否可見或者是否已經重新排列 – Tsundoku

+0

您必須發佈您的HTML和您正在搜索的內容。 –

+0

我已更新我的問題 – Tsundoku

0

我從來沒有使用過這個插件,但依賴於html結構,你可以使用jQuery .index()來查找什麼是索引孩子...

看看這個小提琴:

http://jsfiddle.net/UwQ35/

+0

這會要求每一行都有一個ID。這不是有效的,尤其是當DOM已經爲您提供了一個可以使用的結構。 – Incognito

+0

ID只是一個例子,可能是一個類(這是他想要的) – Andre

1

隨着數據表的最新版本,你可以指定類名和顯示/隱藏列。

var data_table = $('#data-table').DataTable(); 
data_table.columns('.location-col').visible(true); 

希望這會有所幫助。