我有一个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") )
失败?
答案 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") );