jQuery DataTables:如何通过 tr 的行 ID 获取行索引(或 nNode)?
Posted
技术标签:
【中文标题】jQuery DataTables:如何通过 tr 的行 ID 获取行索引(或 nNode)?【英文标题】:jQuery DataTables: How to get row index (or nNode) by row id of tr? 【发布时间】:2011-11-22 03:07:48 【问题描述】:我有一个数据表<table id="myTable">
。我想fnUpdate()
和fnDestroy()
我的行。每行都有一个 id,例如:<tr id="16">
。
对于fnUpdate()
/fnDestroy()
适当的<tr>
,我需要获取该行的索引。为此我尝试使用fnGetPosition()
,但我尝试的方式不是这样做的:
$("#myTable").fnGetPosition( $("#16") )
结果
TypeError: nNode.nodeName 未定义 [Break On This Error] var sNodeName = nNode.nodeName.toUpperCase();
这是有道理的,因为fnGetPosition()
expexts nNode(在我的例子中是一个 htmlTableRowElement)。
如何获得具有 id="16"
的 HTMLTableRowElement?
编辑:
我的问题的正确答案是:document.getElementById("16")
。基于此,我想将我的问题改为:
为什么
$("#myTable").fnGetPosition( document.getElementById("16") )
工作,但是
$("#myTable").fnGetPosition( $("#16") )
失败了?
【问题讨论】:
【参考方案1】:对于仍有此问题的任何人,请尝试以下操作:
$("#myTable").fnGetPosition( $("#16")[0] )
要获得与document.getElementById
相同的结果,您应该访问 jQuery 对象中的第一个元素。
【讨论】:
【参考方案2】:document.getElementById() 返回一个 DOM 对象,并且 DOM 对象上的所有内容本质上都是可访问的。
JQuery 的 $('#...') 返回围绕单个 DOM 对象或一组 DOM 对象(取决于选择器)的包装器,因此,它不返回实际的 DOM 对象。它使处理 DOM 对象变得更加容易。
您在第二种情况下收到该错误的原因是 $(#...) 实际上不是 DOM 对象。
【讨论】:
哦,谢谢。有一个 get() 方法来检索与 jQuery 对象匹配的 DOM 元素。所以$('#16').get()
应该等同于 document.getElementById("16")
对于我的目的,还是我错过了什么?
是的,根据 Jquery API,它返回指定选择器匹配的 DOM 元素:api.jquery.com/get【参考方案3】:
你应该这样做:
var oTable = $('#myTable').dataTable();
oTable.fnGetPosition( $("#myTable #16") );
【讨论】:
嗯,这给了我同样的 TypeError。而且我认为$("#myTable #16")
与$("#16")
相比没有任何改进,因为#16 已经是一个唯一标识符,而我仍然没有用于fnGetPosition()
的HTMLTableRowElement。
这行不通,因为它与他的原始代码具有相同的效果。以上是关于jQuery DataTables:如何通过 tr 的行 ID 获取行索引(或 nNode)?的主要内容,如果未能解决你的问题,请参考以下文章
黄聪:Jquery+DataTables插件,如何在ajax调用服务器数据后,自动给tr添加id属性
jQuery DataTables:如果字符串存在于 <td> 中,如何将类添加到 <tr>?
如何修复移动设备上 jQuery DataTables 中的 scrollX 移动问题?