DataTables であとから各行の項目を処理をする

jQuery のプラグインの DataTables を使っていて、すべての行に含まれる項目を処理したいときなどは、fnGetNodes() で項目を取り出して処理をする。

fnGetNodes
Get a single TR node or all TR nodes for the table. Useful for event manipulation.

各行に .hoge があるとして、テーブルが出来たあと ( $('#example').dataTable(); をしたあとの状態 ) で、

$('#example td .hoge').css('color', '#ff0000');

としても現在表示中のページの項目しか変わらない。

DataTables は、表示されている行とは別に、表全体のデータを DOM から取り除いているので、 fnGetNodes() で取り出して処理する必要がある。

一気に処理

var oTable = $('#example').dataTable();
$(otb.fnGetNodes()).find('.hoge').css('color','#ff0000');

それぞれを処理

var oTable = $('#example').dataTable();
$( oTable.fnGetNodes() ).each(function(){
  $(this).find('.hoge').css('color', '#ff0000');
});

やりかたがわからなくてハマっていたら、FAQ でした。