DataTable点击qtemp类单元格取值返回undefined问题求助
问题解决:DataTable动态表格点击单元格获取值返回undefined
核心错误原因
你遇到的undefined问题,和表格动态生成无关,直接原因是jQuery对象的属性使用错误:
$(this)是jQuery包装后的对象,它没有原生DOM的innerHTML属性,直接访问会返回undefined。- 事件绑定范围过大,当前代码监听所有
td的点击,但你只需要处理带有qtemp类的单元格。
解决方案1:修正内容获取方式+缩小监听范围
修改事件选择器,只监听qtemp类的单元格,同时用正确的方式获取单元格内容:
$('#data tbody').on('click', 'td.qtemp', function () { // 方式1:用原生DOM元素获取内容 var layout = this.innerHTML; // 方式2:用jQuery方法获取内容 // var layout = $(this).html(); $.ajax({ url: "/workstation", type: "get", data: {layout: layout}, success: function(response) { var new_html = response.html; alert(layout); }, }); });
解决方案2:使用DataTable官方API获取数据(更可靠)
对于DataTable生成的动态表格,官方API能直接获取行数据,避免HTML结构变化导致的问题:
$('#data tbody').on('click', 'td.qtemp', function () { // 获取当前单元格所在行的完整数据 var rowData = table.row($(this).closest('tr')).data(); // 直接取对应字段的值(和你列定义的data属性一致) var layout = rowData.DLin; $.ajax({ url: "/workstation", type: "get", data: {layout: layout}, success: function(response) { var new_html = response.html; alert(layout); }, }); });
注意:这里的table是你初始化DataTable时定义的变量,要确保它在事件绑定的作用域内可访问。
内容的提问来源于stack exchange,提问作者HalPlz
相关产品推荐
相关产品推荐

