2017-09-29 7 views
1

テーブル列の検索で常に最初の行とその後の一致する行が表示される理由を理解するのが難しいですか?キーワードは行1のセルと一致しませんが、常に上に表示されますか?私は何度も自分のコードを見てきましたが、最初の行を隠していない別のアプローチを試みましたか?テーブル内の最初の行が隠れていないJQuery検索

は、ここに私の作業コード

$('#filterbyname').on("keyup", function() { 
     var val = $(this).val(); 
     var matches = $("table.bill tr:not(:first-of-type)"); 

     matches.each(function (i,e) {    
      debugger; 
      $row = $(this);     
      $cells = $row.find("td:nth-child(2)"); 

      $cells.each(function (i2, e2) { 
       var cell = $(this).text(); 
       debugger; 
       $row.toggle(cell.indexOf(val) >= 0);    
      }); 
     }); 
}); 

cell.indexOf(val) >= 0)は、それが一致する行を応じて切り替えることができます場合は、上記のコードから見ることができます。

お願いします。あなたは彼らが彼らの親の最初の子ではないことを意味し、:notセレクタはここ:first-of-typeに一致するすべての要素を除外しているため、すべての行は、最初のものを期待して選択するtr:not(:first-of-type)を使用して、そうしているあなたのmatches変数で実際に

+2

それはTR 'によるものです(:第一の型)'。 –

答えて

3

最初にtrは無視されます。

変更このコード:次のよう

var matches = $("table.bill tr:not(:first-of-type)"); 

は:ない:

var matches = $("table.bill tr"); 
+1

もし ':not(:first-of-type)'がヘッダを取り除くのであれば、 '$(" table.bill> tbody> tr ")' –

+0

@ freedomn-mを使用します。 OPに 'tr 'を持つ' thead'。 –

+0

@chsdkそれは治療を働かせてくれてありがとう。自由の上で指摘されているように、それはヘッダーを取り除くためのものでした。 – Kevin

関連する問題