2012-03-07 66 views
21

我正在使用jquery dataTables在我的網站上生成分頁表。我需要運行一個從特定列中獲取所有數據的進程。例如:循環通過DataTables表獲取所有單元格內容

$('.testLink').click(function(){ 
      var cells = new Array(); 
      $('#myTable tr td').each(function(){ 
       cells.push($(this).html()); 
      }); 
      console.log(cells); 
     }); 

這個例子抓住了一切,但我只需要從一列tds的信息。我想我可以通過向該行中的所有tds添加一個類來實現,但我確信有更好的方法。這是一個額外的問題..但我真正想知道的是如何讓這與數據表一起工作?由於該腳本隱藏了大部分表格以便進行分頁,因此此功能僅抓取可見的單元格。我玩fnGetData,但我沒有得到它。有任何想法嗎?

+0

是什麼目的?讓行數據從API並不困難,而且也有可能例子在巨大下載package..post細節和代碼嘗試 – charlietfl 2012-03-07 19:01:50

+0

是獲取數組中的所有行數據,然後我需要使用該數據來運行查詢。我一直在搜索和嘗試API的東西幾個小時,但我不能得到它,所以我想給這個旋渦。 – Zac 2012-03-07 19:10:09

回答

45

要訪問的所有行,你可以這樣做:

var rows = $("#myTable").dataTable().fnGetNodes(); 

在你的情況,這應該工作:

$('.testLink').click(function(){ 
     var cells = []; 
     var rows = $("#myTable").dataTable().fnGetNodes(); 
     for(var i=0;i<rows.length;i++) 
     { 
      // Get HTML of 3rd column (for example) 
      cells.push($(rows[i]).find("td:eq(2)").html()); 
     } 
     console.log(cells); 
    }); 
+1

他不想要所有的行。他希望每個節點都有一個特定的列。 – Ohgodwhy 2012-03-07 19:12:41

+4

@Ohgodwhy:好的,現在就在那裏。 – Diego 2012-03-07 19:18:51

+0

是的!謝謝你正是我所需要的。 – Zac 2012-03-07 19:26:12

1

你要使用 「EQ」 選擇。它開始的 「0」 的指數,所以如果你有..

<tr> 
    <td>0</td> 
    <td>1</td> 
    <td>2</td> 
    <td>3</td> 
</tr> 

然後用

$("td").eq(3); // last one 
$("td").eq(2); //returns "2" 

有意義嗎?

http://api.jquery.com/eq-selector/

+6

不能在分頁表上工作,不可見的行不存在 – charlietfl 2012-03-07 19:19:17

6

下面是使用fnGetData()方法

首先從插件數據,這將是所有行可見或不可見。循環在每個行數據陣列,並推索引= 1(第二小區)到新的數組

 oTable = $('#example').dataTable(); 

     var secondCellArray=[]; 
     $.each(oTable.fnGetData(), function(i, row){ 
      secondCellArray.push(row[1]); 
    }) 

    console.log(secondCellArray) 

編輯:工作演示...看在控制檯後呈現

http://live.datatables.net/apixiv/edit#javascript,html

4

jQuery.map結合fnGetData()爲緊湊的解決方案。下面的函數將返回包含從obj_dtablen列所有值的一維數組:

function getDataTableColumn(obj_dtable,n) { 
    return $.map(obj_dtable.fnGetData(), function(val) { 
     return val[n]; 
    }); 
};