2012-03-31 152 views
0

我正在使用我發現在我的表中搜索的腳本,並只顯示包含與搜索輸入字段中的文本相匹配的行的行。jquery篩選器表但排除一列

 $("#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(); }); 

但現在我要排除的表的兩列,它們都有一個類「.nosearch」, 但我不知道怎麼做這個...

我試着:

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

,並在過濾功能:

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

但都不起作用。

回答

1

你沒有提供你的html,但我認爲這個類是td。這是您的問題,篩選全部在tr級別完成,因此:not適用於tr,它沒有該類。

我會更改它以過濾td s而不是tr元素。像這樣(未經):

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 2012-03-31 19:01:47

0

你總是可以只運行你現在有搜索,然後只需使用

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

算賬,而不是試圖讓你的查詢過於複雜。

+0

這將隱藏單個單元格,這隻會導致一團糟。 – 2012-03-31 18:42:50

+0

對不起,你說「排除2桌,他們有攤位有一個班」nnnarcharch「」,所以也許我很困惑,TDs或TRs有班嗎? – 2012-03-31 18:47:40

+0

他沒有包含html,但'tr's是行,而不是列。 – 2012-03-31 18:48:32

0

什麼自定義函數的過濾器

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

Like this one。當你真的需要行時可能很有用。