通过点击绑定访问数据表数据

时间:2012-02-23 00:51:48

标签: jquery jquery-datatables

我正在使用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>

1 个答案:

答案 0 :(得分:1)

我认为问题是fnGetData返回特定行内容的数据对象,而不是节点本身。但是fnAddDatafnDeleteRow都需要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

祝你好运!

相关问题