jQuery DataTables: как получить индекс строки (или nNode) по идентификатору строки tr?

у меня есть dataTables <table id="myTable">. Я хотел бы fnUpdate() и fnDestroy() мои строки. каждая строка имеет идентификатор, например:<tr id="16">. К fnUpdate()/fnDestroy() соответствующую <tr>, мне нужно получить индекс строки. Для этого я пытаюсь использовать fnGetPosition(), но то, как я пытаюсь это сделать, не так:

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

результаты

TypeError: nNode.nodeName не определено [перерыв на этой ошибке] var Сноуденом = nNode.nodeName.toUpperCase ();

что имеет смысл, как fnGetPosition() expexts nNode (в моем случае HTMLTableRowElement).

как получить HTMLTableRowElement, который имеет id="16" ?

изменить: Правильный ответ на мой вопрос: document.getElementById("16"). Исходя из этого, я хотел бы изменить мой вопрос:

почему

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

работает, а

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

сбой?

3 ответов


документ.getElementById () возвращает объект DOM, и все в объекте DOM будет по своей сути доступно.

в jQuery $('#...') возвращает оболочку вокруг одного объекта DOM или набора объектов DOM (в зависимости от селектора) и, как таковой, не возвращает фактический объект DOM. Это упрощает работу с объектами DOM.

причиной, по которой вы получаете эту ошибку во втором случае, будет $(#...) на самом деле не является объектом DOM.


для тех, кто еще имеет эту проблему, попробуйте следующее:

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

чтобы получить тот же результат, что и document.getElementById вы должны получить доступ к первому элементу в объекте jQuery.


вы должны сделать:

var oTable = $('#myTable').dataTable();
oTable.fnGetPosition( $("#myTable #16") );