我有一个工作的jQuery DataTable(https://www.datatables.net/)使用TableTools插件,其中一列的每一行都有<span>
元素。
单击导出按钮,我想隐藏/删除导出文件中的<span>
元素。不要删除整列,而只删除该列中的<span>
元素。
我怎样才能做到这一点?我了解如何从导出中删除整个列,但我还没有找到从导出中删除特定元素的方法。
由于
已更新
"oTableTools": {
"sSwfPath": "/public/swf/copy_csv_xls_pdf.swf",
"aButtons": [
{
"sExtends": "print",
},
{
"sExtends": "copy",
},
{
"sExtends": "csv",
"fnCellRender": function ( sValue, iColumn, nTr, iDataIndex ) {
return sValue;
}
}
]
}
我已经fnCellRender
了,我只是不确定剥离<span>
元素的最佳方法。
答案 0 :(得分:1)
您需要使用文档中的按钮的fnCellRender
选项:
用于修改通过fnGetTableData API方法(用于导出数据)从表中读取的数据。这允许在导出数据之前预处理数据 - 例如剥离HTML的某些部分或后缀其他数据。
阅读所有选项here。另请阅读初始化here时的aButtons
选项。我们的想法是定义TableTools
将使用的按钮,并在按钮定义中使用sExtends
选项来扩展TableTools
按钮行为。
以下是一个例子:
$(document).ready( function () {
$('#example').dataTable( {
"dom": 'T<"clear">lfrtip',
"tableTools": {
"sSwfPath": "TableTools_files/copy_csv_xls_pdf.swf",
"aButtons": [
{
"sExtends": "csv", //extend the default csv
"fnCellRender": function ( sValue, iColumn, nTr, iDataIndex ) {
if ( iColumn === 5 ) {
//feel free to modify the value here
return sValue +" TableTools";
}
return sValue;
}
}
]
}
} );
} );
阅读示例中的评论,根据您的需要进行调整,随时发表评论。
修改强>
阅读所有这篇文章,并使用更适合您需求的选项
How to strip HTML tags with jQuery?
Jquery: Strip all specifc HTML tags from string
Remove all HTMLtags in a string (with the jquery text() function)
JavaScript: How to strip HTML tags from string?
答案 1 :(得分:1)
在我的测试中,最新的TableTools已经在CSV文件中删除了HTML标签。见this example。
要使其正常工作,您需要删除fnCellRender
。显然,如果存在fnCellRender
,TableTools默认情况下不进行HTML剥离。
此外,虽然DataTables会尝试自动确定列数据类型,但您可能需要考虑将column type设置为html
以进行搜索和过滤。
从手册:
在客户端处理模式下运行时,DataTables可以处理 用于在适合的手册中的每个单元格中显示的数据 正在执行的行动。例如, HTML标记将被删除 从用于过滤器匹配的字符串,而排序格式可能 删除货币符号以允许对货币值进行排序 数字。
DataTables有许多自动的内置类型 检测强>:
...
html
- HTML标记的基本字符串处理
- 排序 - 已删除HTML标记排序
- 过滤 - 从过滤字符串中删除的HTML标记