2017-06-27 2 views
1

Ich habe folgende jQuery, die wie ein Zauber funktioniert:Schleife durch alle Zellen außer zuerst in jeder Zeile und Zeile ausgeblendet, wenn alle Zellen spezifische Klasse haben

$('#planCompareTable > tbody > tr').each(function() { 
    if ($(this).find('td:nth-child(2)').hasClass('noValue') && $(this).find('td:nth-child(3)').hasClass('noValue')) { 
     $(this).hide(); 
    } 
} 

Ich bin an einem bestimmten Tisch suchen, Schleife durch jede Zeile, Überprüfung Zellen 2 und 3 in dieser Zeile für die Klasse noValue, und die Zeile versteckt, wenn das existiert. Groß.

Mein Problem ist jetzt, ich weiß nicht, wie viele Spalten diese Tabelle haben wird, aber ich muss weiterhin jede Spalte nach dem ersten in jeder Zeile für diese Klasse überprüfen und die Zeile ausblenden, wenn & nur wenn alle Zellen jenseits der ersten haben diese Klasse.

Ich habe versucht, meine zweite Zeile zu if ($(this).find('td:not(:first)').each(hasClass('noValue'))) aktualisieren, aber wenn es eine Zelle mit der Klasse noValue findet, wird es die gesamte Zeile ausblenden, unabhängig vom Status der anderen Zellen in dieser Zeile.

Meine Annahme ist, dass ich hier eine verschachtelte Funktion() haben muss, aber ich bin mir nicht sicher, wie ich das machen soll.

+1

Ich glaube nicht, dass Sie ein jeder verschachtelt benötigen. Zählen Sie einfach alle Zellen in einer Reihe und vergleichen Sie diese mit der Anzahl der Zellen, die Ihre Zielklasse haben. Wenn der Unterschied mehr als 1 ist, verstecken Sie es. –

Antwort

1

Sie können die Anzahl der noValue Zellen zählen, und wenn es eine weniger als die gesamten Zellen die Zeile ausblenden.

$('#planCompareTable > tbody > tr').each(function(){ 
 
    var $row = $(this); 
 
    var allNoValue = ($row.find("td.noValue").length == ($row.find("td").length-1)); 
 
    if(allNoValue) $row.hide(); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<table id="planCompareTable"> 
 
    <tbody> 
 
    <tr> 
 
     <td>row1</td> 
 
     <td class="noValue"></td> 
 
     <td class="noValue"></td> 
 
    </tr> 
 
    <tr> 
 
     <td>row2</td> 
 
     <td class="noValue"></td> 
 
     <td class=""></td> 
 
    </tr> 
 
    </tbody> 
 
</table>

+0

Das funktionierte wie ein Zauber. Vielen Dank! – nlake

Verwandte Themen