从一个按钮一个DataTable访问数据的行内点击(Accessing data in a Data

2019-08-17 15:17发布

我可以通过以下简单的方法访问数据行:

$('#received-body tr').click( function(){
    aData = received_table.fnGetData(this);
    selected_received_id = aData[0];
    alert( selected_received_id );
});

但我不能从所谓的按钮访问他们.received-update的行之一:

$('#received-body .received-update').click( function(){
    alert( 'update' ); // works
    aData = received_table.fnGetData( $(this).parents('tr')); // fails
    selected_received_id = aData[0];
    alert( 'update:' + selected_received_id );                      
});

任何帮助表示赞赏

Answer 1:

您可以通过替换解决您的问题

    aData = received_table.fnGetData($(this).parents('tr'));

    aData = received_table.fnGetData($(this).parents('tr')[0]);


也需要此相同的语法调用received_table.fnGetPosition()



Answer 2:

下面的代码会有所帮助,

var table = $('#tableID').DataTable();
var row_data;
$('#tableID tbody').on( 'click', 'button', function () {
    row_data = table.row( $(this).parents('tr') ).data();
    console.log(row_data); // you will get the row data
});


Answer 3:

您可能需要使用最接近的父母()可能会被给予超过一个行。 虽然最近率先拿到赛了DOM层次结构。

aData = recieved_table.fnGetData($(this).closest('tr')); // fails


Answer 4:

aData = recieved_table.fnGetData($(this).parent('tr')); 

尝试.parent()代替.parents()因为.parents()获取每个元素的父在当前匹配的元素。 .parent()如果TR是TR的直接孩子才会工作。 在那种情况下.closest()将是理想的,如下所示。

aData = recieved_table.fnGetData($(this).closest('tr'));

如果上面没有为你的工作,尽量过滤方法,以减少匹配的元素。



Answer 5:

@Stephen布朗,请您提供解决方案,如果你找到了如何获得价值。 我有完全相同的问题。 我已经尝试在这个岗位,但没有运气的所有方式。 我有下面的代码。

   "fnDrawCallback": function() {
        $(".select_row ").click(function(e){
            dataId = $(this).data("id");
            tr=$(this).closest("tr")[0];
            getSelected(tr, true);
        }); 
    }

而且功能(studentDataTable是数据表)

    function getSelected(tr, tableLoaded){
        console.log($(tr));
        console.log(tr);            
        if (tableLoaded){
             data = studentDataTable.fnGetPosition($(tr));
        }
    }

在打印的console.log以下

  Object[tr.even]  and <tr class="even"> respectively

任何帮助深表感谢

编辑
得到它以这种方式工作(不知道我以前做错了)

  "aoColumnDefs": [ { "fnRender": function(oObj) { return '<input type="checkbox" onClick=getSelected(this); data-id="' + oObj.aData.id + '" value="' + oObj.aData.id + '" />'; }, "bSortable": false, "aTargets": [0] }, 

和功能

  function getSelected(checkbox){ console.log($(checkbox)); if ($(checkbox).is(':checked')) { tr=$(checkbox).closest("tr")[0]; console.log(tr); data = studentDataTable.fnGetData(tr); console.log(data['groupsList']); } } 
分享 | 提高这个答案

    你的答案

    感谢您提供的答案,堆栈溢出!

    • 请务必回答这个问题 。 提供详细资料和分享您的研究!

    要避免 ...

    • 寻求帮助,澄清,或响应其他的答案。
    • 根据意见作出说明; 对它们进行备份与引用或个人经验。

    要了解更多信息,请参阅我们的精力创作出精彩的答案的提示 。

    不是你要找的答案? 浏览标签的其他问题jQuery的 数据表或问自己的问题 。

    收藏的人(0)

    Ta的文章 更多文章
    登录 后发表评论
    0条评论
    还没有人评论过~