2016-08-30 6 views
1

DataTableをループし、 "成功"のクラスのセルを含む行のみを処理しようとしています。私は文法を正しく理解するのに問題があります。誰でも助けることができますか?DataTables - 特定のセルクラスを持つ行を処理する

for(i=0; i<myDataTable.rows()[0].length; i++) { 
    if(myDataTable.rows(i).data()[0] != "" && myDataTable.rows(i).data()[0].child('td').hasClass('success')) { 
     <process stuff> 
    } 
} 

任意の提案:ここ

は、私がこれまでに(それが動作していない)している何ですか?

+1

「myDataTable」はどのように見えますか? – amflare

+0

わからないので、どのデータベースを使用しているか教えてください。 –

+0

@amflare私はそれが本当に関係しているとは思わない?私は、行(i)内の​​に "success"のクラスがあるかどうかを特定しようとしています。他のすべては正常に動作し、私はif文を制約しようとしています。 – niclake

答えて

1

あなたは.find() jQueryの機能との組み合わせでrow().node()のDataTableのAPI呼び出しでこれを行うことができます。

for(i=0; i<myDataTable.rows()[0].length; i++) { 
    if(myDataTable.row(i).data()[0] != "" // <-- See Note about this part 
     && $(myDataTable.row(i).node()).find('td.success').length) { 
     //process stuff 
    } 
} 

あなたのコードスニペットのこの変更が見つかった行の<tr>要素を取得node()コールを、使用します。 myDataTable.row(i)。次にfind()メソッドを使用して<td>(特定の列についてのみ気にするならば違います)がsuccessクラスにあるかどうかを確認できます。

あなたのコードはmyDataTable.row(i).data()[0] != ""を持っています。これは、行の最初の列が空の文字列でないことをチェックします。それを処理のための条件の一部にしたい場合は、それを残しておきますが、あなたはその質問に言及していないので、わかりません。

また、1行の場合、row()rows()ではないことに注意してください。

+0

何らかの理由で、そのノードをjQueryオブジェクトにする必要があります。したがって、 '&& $(myDataTable.row(i).node())。find(' td.success ')。length'は私のためのトリックでした。 – niclake

+1

@niclakeああ、ええ、それは私の悪いです。私は将来の読者のための例でそれを修正します。ナイスキャッチ! –

+0

また、元の 'i niclake

関連する問題