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

Mat*_*ias 6 javascript css jquery dom datatables

我有一个dataTables <table id="myTable">.我想fnUpdate()fnDestroy()我的行.每一行都有一个id,例如:<tr id="16">.对于fnUpdate()/ fnDestroy()适当的<tr>,我需要得到该行的索引.为此我尝试使用fnGetPosition(),但我尝试它的方式不是这样做的方式:

$("#myTable").fnGetPosition( $("#16") )
Run Code Online (Sandbox Code Playgroud)

结果是

TypeError:nNode.nodeName未定义[Break On此错误] var sNodeName = nNode.nodeName.toUpperCase();

这是有道理的,因为fnGetPosition()nNode(在我的例子中是HTMLTableRowElement).

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

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

为什么

$("#myTable").fnGetPosition( document.getElementById("16") ) 
Run Code Online (Sandbox Code Playgroud)

工作,但是

$("#myTable").fnGetPosition( $("#16") )
Run Code Online (Sandbox Code Playgroud)

失败?

小智 23

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

$("#myTable").fnGetPosition( $("#16")[0] )
Run Code Online (Sandbox Code Playgroud)

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


Ash*_*yan 12

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

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

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