读取JQuery中隐藏列的值
我需要隐藏表中的一列,但在此之后,我无法读取选定行的隐藏列值读取JQuery中隐藏列的值,jquery,datatables,Jquery,Datatables,我需要隐藏表中的一列,但在此之后,我无法读取选定行的隐藏列值 dtTable = $('#lookupTable').DataTable({ "columnDefs": [ { "targets": [ 0 ], "visible": false, "searchable": false } ],
dtTable = $('#lookupTable').DataTable({
"columnDefs": [
{
"targets": [ 0 ],
"visible": false,
"searchable": false
}
],
aaData: data,
aoColumns: cols,
paging: false,
scrollCollapse: true,
destroy: true
});
如您所见,第一列现在已隐藏。我试图用代码读取列值
selectedIndex = $(this).find('td:eq(0)').text();
如果我从代码中删除,我可以读取第一列的值,但如果它是隐藏的,它会给我第二列的值
dtTable = $('#lookupTable').DataTable({
"columnDefs": [
{
"targets": [ 0 ],
"visible": false,
"searchable": false
}
],
aaData: data,
aoColumns: cols,
paging: false,
scrollCollapse: true,
destroy: true
});
我很想更改witdh属性,但它不起作用。CSS选择器不起作用,因为columnDefs中的visible:false并不意味着该列得到等效的显示:none;标记中的样式属性 相反,您必须使用DataTables API来获取隐藏列中的数据 函数fnGetData将实现这一点。它返回单元格中作为参数传递给函数的文本数据
var position = dtTable.fnGetPosition(this);
var hiddenColumnValue = dtTable.fnGetData(position)[0];
以下是文档中的示例
oTable.$('td').click( function () {
var sData = oTable.fnGetData( this );
alert( 'The cell clicked on had the value of '+sData );
});
在您的例子中,列是隐藏的,因此您必须将它与第二个API调用结合起来。假设单击第一列隐藏的行,则可以将fnGetData与fnGetPosition函数组合
var position = dtTable.fnGetPosition(this);
var hiddenColumnValue = dtTable.fnGetData(position)[0];
检查文档,它有一些很好的例子
这是工作代码
$('#lookupTable tbody').on('click', 'tr', function () {
selectedIndex = dtTable.row(this).data()[0];
});
通过dataTables API,您可以使用多种方法以正确的方式从隐藏列中检索数据。例如,您可以使用。正如您在链接中看到的,您可以对单元格使用各种选择器,比如jQuery选择器 下面是一个非常简单的示例,用于注销隐藏的第一列的值:
var dtTable = $('#example').DataTable()
dtTable.columns([0,1,2]).visible(false);
for (var i=0;i<10;i++) {
console.log(dtTable.cells({ row: i, column: 0 }).data()[0]);
}
这一点再怎么强调也不为过:始终使用API,不要尝试在初始化的数据表上使用传统的jQuery
在这种情况下,原因很明显:jQuery只能访问DOM中实际存在的元素。当您在dataTables中隐藏列时,它们不会像在display中那样被隐藏:无,它们不会被渲染
var dtTable=$'test'。DataTable另一个解决方案是添加Css类ID Fiekd Visbilety hideen和$this;重新获取值。正确的答案非常陈旧。所以,如果正确的答案不适合你。请尝试以下方法:
selectedIndex = dtTable.row(this).data();
此代码将返回为此行获取的原始json对象。比如:
{
"modify":"false",
"lastModify":"Tuesday",
"name":"abc",
"DT_RowId":"row_1",
"fileID":"0bde976"
}
要获取文件ID,您只需:
alert("ID = "+selectedIndex.fileID);
传统的jquery无法处理datatable,您必须使用API定义的方法来获取值。在我的例子中,这可以很好地在每行单击按钮时获得隐藏列值-
$(function () {
var t = $('#mytableid').DataTable({
"columnDefs": [{
"searchable": false,
"orderable": false,
"visible":false,
"targets": [0]
}]
});
$('#mytableid').on('click', '.btnClass', function () {
var currentRow = $(this).closest("tr");
var columnvalue = t.row(currentRow).data()[0];
console.log(columnvalue);
});
});
再加上这个,因为它是旧的,并且没有一个答案具有我曾经使用的快速、干净的jquery格式。即使您试图访问的对象当前未在DOM中呈现,也可以使用传统的jquery选择器,例如隐藏或在另一个页面上,方法是将其作为Datatable的方法。 因此,在你的情况下:
dtable.$("yourJQuerySelector")
这将选择您习惯的元素,并为我的案例工作。非常感谢,我搜索了fnGetData函数,但它是旧函数,因此我找到了table.row。。所以它起作用了。。这是我的代码。$'lookupTable tbody'。在“单击”、“tr”时,函数{//从单元格selectedIndex=dtTable.rowthis.data[0];}中获取第一个值;这个炒锅,但对于分页指数将改变,需要考虑页面索引,也就是丹尼尔B -你是我的英雄!问题和答案都有1个答案。谢谢,谢谢你的回答。我尝试了代码,但它总是从0到9,即使我改变了顺序。但这没关系,另一个答案对你有用me@unbalanced-是的,因为for循环从0-9开始:本例中的选择器是{row:,column:0}-很好,您让它工作了!您应该描述您的答案或评论您的代码请尝试格式化您的答案,使其更易于理解,并添加一些解释。虽然此代码可以回答问题,但提供有关如何和/或为什么解决问题的其他上下文将提高答案的长期价值。