获取行数据失败,错误无法在字符串上创建属性'guid'

时间:2016-06-18 04:29:54

标签: javascript jquery datatable datatables

我正在使用jquery数据表。我尝试检索行数据时遇到Cannot create property 'guid' on string错误。

http://jsfiddle.net/rqx14xep

var employersTable = $('#employersTable').DataTable();

$('#add').click(function() {
  addRow($('.username').val(), $('.phone').val());
});

$('body').on('click', '#employersTable tr', retrieveRow(this));

function addRow(username, phone) {
  employersTable.row.add([
    '<td>' + username + '</td>',
    '<td>' + phone + '</td>',
  ]).draw();
}

function retrieveRow(e) {
  alert('fire')
  tr = e.target;

  row = employersTable.row(tr);

  detail_data = row.data();
  $("#result").empty().html(detail_data[0] + " " + detail_data[1])
}

另一个奇怪的事情是我的函数retrieveRow在init上启动,为什么?我把这个函数放在一个点击事件中。

1 个答案:

答案 0 :(得分:8)

你的主要问题是这一行:

$('body').on('click', '#employersTable tr', retrieveRow(this));
                                            ^^^^^^^^^^^^^^^^^

这实际上立即执行 retrieveRow()。当您在on()事件处理程序中引用函数变量时,引用它作为变量:

$('body').on('click', '#employersTable tr', retrieveRow);

retrieveRow()

中存在其他问题
tr = e.target;

e.target不一定是<tr>,很可能是您点击的<td>。事件处理程序定位#employersTable tr,因此this包含对<tr>的引用:

tr = $(this)

是正确的,更安全的是

tr = $(e.target).closest('tr')
分叉小提琴 - &gt;的 http://jsfiddle.net/nkaq816f/