2009-12-18 12 views
29

У меня есть столбец с кнопками в таблице Я использую плагин jQuery datatable. Кнопки говорят «Удалить», и идея в том, что, когда вы нажимаете на эту кнопку, она удаляет текущую строку в таблице.Как удалить текущую строку с jQuery datatable plugin

Когда я звоню 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); 
});