如何使用带有页面中多个表的jquery datatable插件删除当前行 [英] How to delete current row with jquery datatable plugin with multiple tables in the page
问题描述
我在网站上使用datatable插件. 通常,我每页只有1个数据表,但是在特殊显示中,我有2个datable.
I use datatable plugin in a website. Normally I have only 1 datatable per page but in a special display I have 2 datable.
实际上我有此代码
var oTable = $('.datatable').dataTable({
'sPaginationType':'full_numbers',
"iDisplayLength": 50,
"oLanguage": {
"sUrl": "js/locales/dataTables.french.txt"
}
});
/* Add a click handler to the rows - this could be used as a callback */
$(".delete-ajax").click(function(event) {
event.preventDefault();
var answer = confirm("Supprimer l'élément ?")
if (answer){
var loading = $('.loading-notification');
loading.removeClass('hidden');
$(oTable.fnSettings().aoData).each(function (){
$(this.nTr).removeClass('row_selected');
});
$(event.target).parents('tr').addClass('row_selected');
var url = $(this).attr('href');
var id = $(this).attr('data-ajax');
var anSelected = fnGetSelected( oTable );
$.ajax({
type: "POST",
url: url,
data: "delete=true&id="+ id,
async : true,
success: function(msg) {
loading.addClass('hidden');
oTable.fnDeleteRow( anSelected[0] );
}
});
}
});
/* Get the rows which are currently selected */
function fnGetSelected( oTableLocal ){
var aReturn = new Array();
var aTrs = oTableLocal.fnGetNodes();
for ( var i=0 ; i<aTrs.length ; i++ ){
if ( $(aTrs[i]).hasClass('row_selected') ){
aReturn.push( aTrs[i] );
}
}
return aReturn;
}
当我只有1个数据表时,此代码可以很好地工作,但是当我有更多数据表时,可以在控制台中获得此代码:
This code work well when I have only 1 datatable but when I have more I obtain In my console :
k is undefined
[Stopper sur une erreur] h=a._iDisplayEnd;if(a.oFeatures.bServe...push(a.aoOpenRows[k].nTr)}}else{d[0]=
关于如何解决此问题的任何想法?
Any idea on how to solve this problem ?
推荐答案
以下是删除表中行的方法(无论页面中有多少表)
Here is how you can delete a row in the table (regardless the number of amount of tables in page)
我在同一页面中有两个表
I got two table in same page
我不确定您提供给表的ID有多好,但是如果它的".datatable"是:
I am not sure about how good is the id that you gave to the table, but if its ".datatable" then:
将此功能添加到您的页面
Add this function to your page
$(".datatable tbody").delegate("tr", "click", function () {
var iPos = oTable.fnGetPosition(this);
if (iPos !== null) {
oTable.fnDeleteRow(iPos);//delete row
}
});
这篇关于如何使用带有页面中多个表的jquery datatable插件删除当前行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!