jQuery DataTables:如何通过tr的行id获取行索引(节点)?

时间:2011-09-21 16:30:24

标签: javascript jquery css dom datatables

我有一个dataTables <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()取代了nNode(在我的例子中是HTMLTableRowElement)。

如何获取具有id="16"的HTMLTableRowElement?

编辑: 我的问题的正确答案是:document.getElementById("16")。基于此,我想将我的问题改为:

为什么

$("#myTable").fnGetPosition( document.getElementById("16") ) 

工作,但

$("#myTable").fnGetPosition( $("#16") )

失败?

3 个答案:

答案 0 :(得分:23)

对于仍有此问题的人,请尝试以下操作:

$("#myTable").fnGetPosition( $("#16")[0] )

要获得与document.getElementById相同的结果,您应该访问jQuery对象中的第一个元素。

答案 1 :(得分:12)

document.getElementById()返回一个DOM对象,DOM对象上的所有内容都将被固有地访问。

JQuery的$('#...')返回一个围绕单个DOM对象或一组DOM对象(取决于选择器)的包装器,因此,它不返回实际的DOM对象。它使得使用DOM对象变得更容易。

在第二种情况下你得到错误的原因是$(#...)实际上不是DOM对象。

答案 2 :(得分:1)

你应该这样做:

var oTable = $('#myTable').dataTable();
oTable.fnGetPosition( $("#myTable #16") );
相关问题