2012-03-31 12 views
0

Ich verwende ein Skript, das ich gefunden habe, um in meiner Tabelle zu suchen und nur die Zeilen anzuzeigen, die die Zeilen enthält, die dem Text in dem Such-Eingabefeld entsprechen.jquery Filtertabelle, aber eine Spalte ausschließen

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

Aber jetzt will ich zwei Spalten der Tabelle auszuschließen, sie haben beide eine Klasse „.nosearch“ haben, aber ich weiß nicht, wie Sie dies tun ...

Ich habe versucht, :

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

und auch in der Filterfunktion:

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

aber beide nicht funktioniert.

Antwort

1

Sie haben Ihre HTML nicht angegeben, aber ich nehme an, die Klasse ist auf der td. Dies ist Ihr Problem, die Filterung ist alles auf der Ebene tr getan, so dass die :not gilt für die tr, die nicht die Klasse hat.

Ich würde es ändern, um auf die td s statt die tr Elemente zu filtern. So etwas wie dieses (nicht getestet):

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

Danke !! Es klappt! Entschuldigung, habe das HTML nicht angezeigt, aber Sie haben es trotzdem gelöst ... – dacami

0

Sie können immer laufen nur die Suche, die Sie jetzt haben, und verwenden Sie dann nur

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

danach, anstatt zu versuchen, Ihre Frage zu kompliziert zu machen.

+0

Dies würde die einzelnen Zellen verstecken, die nur eine Unordnung verursachen würde. –

+0

Es tut mir leid, Sie sagten "2 Spalten der Tabelle ausschließen, haben sie Stand eine Klasse haben" .Nosearch "", also vielleicht bin ich verwirrt, haben die TDs oder TRs die Klasse? –

+0

Er enthielt nicht die HTML, aber 'tr' sind Zeilen, keine Spalten. –

0

Was ist eine benutzerdefinierte Funktion für Filter

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

Like this one. Kann nützlich sein, wenn Sie wirklich Zeilen benötigen.

Verwandte Themen