2014-01-14 40 views
0

我正在使用jQuery DataTables,並且每行的第一列有一個複選框,這意味着它就像一個checkboxColumn。然後,我想獲取所有已檢查的行,但「fnGetNodes」函數不返回所有行,它只是返回可見的行。 DataTable中反映用戶滾動(公司訪問,訪問區域,部門訪問等),當我打開一個對話框,修改其中的一個(例如:區域接入)和撿起來,我關閉對話框,然後去回到有問題的數據表(用戶卷表)。當我嘗試獲取所有檢查的卷(以防刪除另一個卷)時,fnGetNodes只返回可見行,而不是所有行。 這裏的代碼行:jquery datatables fnGetNodes無法正常工作

data = [];  
$($('table', "div#example").dataTable({ bRetrieve: true }).fnGetNodes()).find(":checkbox:checked").each(function (i, o) { 
     data.push($(o).val()); 
}); 

任何建議將不勝感激。

+0

爲什麼你看不見行? – dcodesmith

+0

原因我正在使用分頁和過濾器,並根據datatables.net,f​​nGetNodes()必須返回所有行或數據(fnGetData)。 – pedritin

+0

你究竟想在這裏完成什麼?與複選框我的意思是 – dcodesmith

回答

1

好的,這是我的,我認爲是一個整潔。

其中.cb是分配給所有複選框的類。

$('body').on('click', 'table tr .cb', function(){ 
    var value = $(this).val(), 
     isChecked = $(this).is(':checked'), 
     index = arr.indexOf(value); 

    if (isChecked && index === -1) { // add to array if it doesn't exist in there already 
     arr.push(value); 
    } else if (!isChecked && index !== -1){ // if value exists in array and checkbox in unchecked, remove it from the array 
     arr.splice(index, 1); 
    } 
}); 

DEMO

+0

對不起,這不是我想要的。事情是我無法得到所有的複選框 – pedritin

+0

然後,爲什麼不只是像'$('body')那樣選擇表格行?find('table tr')' – dcodesmith

+0

因爲只需要看見行。請記住,jQuery數據表不會隱藏行,它會將其刪除。 – pedritin