2012-03-31 12 views
0

私は自分のテーブルで検索し、検索入力フィールドのテキストと一致する行を含む行のみを表示するスクリプトを使用しています。私が試したjquery filter tableしかし1つの列を除外します

...

 $("#searchfahrzeuge").keyup(function(){ 

     $("#fahrzeugliste").find("tr").hide(); 
     var data = this.value.split(" "); 
     var jo = $("#fahrzeugliste").find("tr"); 


     $.each(data, function(i, v){ 
      jo = jo.filter("*:containsIgnoreCase('"+v+"')"); 
     console.log(jo); 
     }); 

     jo.show(); }); 

しかし、今、私は、テーブルの2つの列を除外するには、彼らは両方ともクラス「.nosearch」を持っている必要があり、 が、私はこれを行う方法がわかりません:

var jo = $("#fahrzeugliste").find("tr:not(.nosearch)"); 

ともフィルタ機能で

jo = jo.filter("*:not(.nosearch):containsIgnoreCase('"+v+"')"); 

が、両方が動作しません。

答えて

1

あなたはあなたのhtmlを提供していませんが、私はそのクラスがtdであると仮定します。これは問題です。フィルタリングはすべてtrレベルで行われ、:notはクラスを持たないtrに適用されます。

trではなく、tdでフィルターに変更します。このような何か(未テスト):

var jo = $("#fahrzeugliste").find("tr > td"); 

    $.each(data, function(i, v){ 
     jo = jo.filter(":not(.nosearch):containsIgnoreCase('"+v+"')"); 
    }); 

    jo.parent().show(); // show the tr's for all matched tds 
+0

ありがとう!!できます!申し訳ありませんが、htmlを表示していませんでしたが、とにかくそれを解決しました... – dacami

0

あなたはいつもあなたが今持っている検索を実行し、だけではなく、あなたのクエリが過度に複雑にしようとの、その後

$('.nosearch').hide(); 

を使用することができます。

+0

これは個々のセルを隠してしまい、混乱の原因になります。 –

+0

申し訳ありませんが、 "テーブルの2列を除外して、ブースにクラス" .nosearch "を持っていると言ったので、混乱しているかもしれません.TDやTRにクラスがありますか? –

+0

彼はHTMLを含んでいませんでしたが、 'tr'は列ではなく行です。 –

0

何フィルタ

var jo = $("#fahrzeugliste tr") 
.filter(":containsIgnoreCase('"+v+"')") 
.filter(function(i){ 
    if(!$(this).children('td').hasClass('nosearch')) 
    return $(this); 
}); 

Like this oneのためのカスタム関数について。実際に行が必要なときに便利です。

関連する問題