我正在使用Jquery DataTables 1.7.6和JQuery 1.8.6。我正在尝试设置一个按钮在一行中的数据表,然后捕获该按钮的单击以将行移动到另一个表。我在获取DataTable中的数据时遇到问题,无法调用添加和删除函数。
<script type="text/javascript">
$(document).ready(function () {
var eligibleCreatives = $('#EligibleCreativeTableId').dataTable({
"bJQueryUI": true,
"bStateSave": true,
"bAutoWidth": false,
"aoColumnDefs": [
{ "bSortable": false, "aTargets": [0] },
{ "bVisible": false, "aTargets": [3] },
],
"aaSorting": [[1, "asc"]]
});
associatedCreatives = $('#AssociatedCreativeTableId').dataTable({
"bJQueryUI": true,
"bStateSave": true,
"bAutoWidth": false,
"aoColumnDefs": [
{ "bSortable": false, "aTargets": [0] },
{ "bVisible": false, "aTargets": [3] },
],
"aaSorting": [[1, "asc"]]
});
eligibleCreatives.$('tr').click(function () {
var data = .fnGetData( this );
// this tells me that eligibleCreatives has no method $
});
$('#disassociate-creative').click(function () {
//I can't get at the actual row node here.
var data = associatedCreatives.fnGetData($(this).closest('tr')[0]);
eligibleCreatives.fnAddData(data);
associatedCreatives.fnDeleteRow(this);
return false;
});
$('#associate-creative').click(function () {
var data = associatedCreatives.fnGetData($(this).closest('tr')[0]);
associatedCreatives.fnAddData(data);
eligibleCreatives.fnDeleteRow(this);
return false;
});
});
function fnClickAssociate() {
$('#AssociatedCreativeTableId').dataTable().fnDeleteRow();
$('#AssociatedCreativeTableId').dataTable().fnAddData([]);
}
</script>
答案 0 :(得分:1)
我认为问题是fnGetData返回特定行内容的数据对象,而不是节点本身。但是fnAddData
和fnDeleteRow
都需要TR节点,而不是数据对象。解决这个问题的两种方法:
选项1 :如果您确定$(this).closest('tr')[0]
正在返回所需行的整个TR元素,请更改每个click
的第一行功能:
var data = $(this).closest('tr')[0];
这应该为接下来两行中的函数提供适当的TR节点来执行操作。
选项2 :如果您不确定$(this).closest('tr')[0]
是否正在返回整个TR元素(您可以通过console.log()
进行检查 - 查看是否合适返回内容)然后我会考虑在按钮所在的TD元素上使用Datatable.net的fnGetPosition
。我发现它更加灵活,并且它将始终返回一个可以与{一起使用的元素{1}}和fnAddData
。