jQuery + dataTables プラグインを使用しているときに、奇妙な動作に遭遇しました。
次のテーブルがあるとします。
<table id="myTable">
<thead>
<th>col 0</th>
<th>col 1</th>
</thead>
<tbody>
<tr>
<td><input type="checkbox" /></td>
...
</tr>
...
</tbody>
</table>
私は document.ready を呼び出し$('#myTable').dataTable({...});
、ボタンをクリックしたときに入力をチェックしたすべての行を取得したいと考えています (それらがテーブルの現在のページにない場合でも)。
すべての行 (未チェックを含む) を取得するには、これらすべての tr ノードを含む配列を返す$('#myTable').dataTable().fnGetNodes()
( API-Link ) を使用します。その後、この配列を使用して jQuery オブジェクトを作成します。
var nodearray = $('#myTable').dataTable().fnGetNodes();
var trs = $(nodearray);
わからない部分が出てきます。チェックされたすべてのノードを取得するために 2 つの方法を試しましたが、結果は異なりました。
// returns all rows correctly (including invisible rows from other pages)
trs.find('td input:checked').closest('tr');
// return only rows from the current page
trs.has('td input:checked');
jQuery.has() がそれらを見つけられないように DataTables-plugin は行を非表示にするために何をしますか? jQuery.find() はなぜまだ機能しますか?