最近有个需求,给一个用datatable做的表格的某一列添加增加注释的功能,demo如下:
我需要给comments那一列的每一个单元格添加双击事件,用来实现添加注释的功能——假如我要给Mary 添加“bad girl”的 comments,jerry的comments还得是good boy,不能跟着一起变形了对吧。
搜索了一下找到了办法:使用createCell属性。
demo code如下(我没有把添加comments的功能都做完,不过只要能获取到单个单元格的dom元素和对应行的相关信息,其他都是力气活了)
<table class="table">
<thead>
<tr>
<th>name</th>
<th>age</th>
<th>grade</th>
<th>comments</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
<script type="text/javascript">
var data = [
{
'name': 'jerry',
'age': 12,
'grade': 90,
'comments':'good boy'},
{
'name': 'mary',
'age': 12,
'grade': 80,
'comments':'good girl'},
]
$('table').DataTable({
data:data,
columns: [
{'data':'name'},
{'data':'age'},
{'data':'grade'},
{'data':'comments',
'createdCell': function(nTd, sData, oData, iRow, iCol){
$(nTd).dblclick(
function(){
alert('aha!');
console.log(nTd, sData, oData, iRow, iCol);
}
);
$(nTd).attr('title','double click to edit comments');
}
},
]
});
</script>
结果:
这里可以看出createdCell回调函数的几个参数都是什么:
nTd:目标单元格dom 元素
sData:当前单元格返回的data,也就是'data':'comments'对应的数据
oData:当前行的数据
iRow:当前行index
iCol:当前列index