2009-12-18 34 views
29

我有一個表中的按鈕列我正在使用jQuery數據表插件。按鈕說「刪除」,想法是當你點擊該按鈕時,它刪除表中的當前行。如何使用jQuery數據表插件刪除當前行

當我打電話給fnDeleteRow它似乎第一次工作,但沒有任何進一步的時間該行,所以它看起來像它並沒有真正刪除行正確。

+0

需要更多信息。你使用ajax來填充你的數據表或者你在轉換一個靜態的html表嗎?另外:爲什麼數據不再準確?不能datatable移動tr(和相應的id標籤)排序? – r00fus

回答

61

試試這個:

var row = $(this).closest("tr").get(0); 
oTable.fnDeleteRow(oTable.fnGetPosition(row)); 

如果它不工作,檢查下列example

+1

+1但我認爲最接近將是一個比父母更合適的選擇器 – cobbal

+0

我沒有切換它最接近,但之後,它完美地工作。 。謝謝 – leora

+0

爲什麼添加.get(0)? 謝謝你對我有用。 – Shahin

0

this page

$('#example tbody td').click(function() { 
    /* Get the position of the current data from the node */ 
    var aPos = oTable.fnGetPosition(this); 

    //... 
}); 
+0

但我點擊表格單元格內的一個按鈕 – leora

2

比方說,你附加的功能,當用戶點擊該按鈕被調用。該函數將是這樣的

function DeleteRow(event) 
{ 
    //get the row of the cell that is clicked 
    var $row = $(this).parents("tr").eq(0) 
    //if you need the id you can get it as 
    var rowid = $row.attr("id"); 
    //now you can call delete function on this row 
    $row.delete(); 
} 
+4

這似乎不起作用.. – leora

1

如何:

// Delete Row 
    $('.glyphicon-minus').on("click", function() { 
     configTable.row($(this).closest("tr").get(0)).remove().draw(); 
    }); 
0

這是它對我的作用。在文檔就緒函數中,我將轉換後的HTML表格分配給一個變量,並且當單擊一個按鈕時,我用JQuery瀏覽父母/孩子,並將獲取的行作爲參數發送到函數庫的fnDeleteRow()函數。

這是來自庫函數的註釋。還有一個在圖書館中提到的例子。

/** 
* Remove a row for the table 
* @param {mixed} target The index of the row from aoData to be deleted, or 
* the TR element you want to delete 
* @param {function|null} [callBack] Callback function 
* @param {bool} [redraw=true] Redraw the table or not 
* @returns {array} The row that was deleted 
* @dtopt API 
* @deprecated Since v1.10 
* 
* @example 
* $(document).ready(function() { 
*  var oTable = $('#example').dataTable(); 
* 
*  // Immediately remove the first row 
*  oTable.fnDeleteRow(0); 
* }); 
*/ 

// And here's how it worked for me. 
var oTable; 
$("document").ready(function() { 
    oTable = $("#myTable").dataTable(); 
}); 

//Remove/Delete button's click. 
$("a[name='deleteColumn']").click(function() { 
    var $row = $(this).parent().parent(); 
    oTable.fnDeleteRow($row); 
});