Ich verwende den folgenden Code, um einige Tabellen auf einer Seite zu entfernen:
%Vor%Das funktioniert ganz gut, aber die geraden / ungeraden Intervalle werden auf jede Tabelle auf der Seite angewendet. Ich möchte, dass jeder Tisch das gleiche Muster hat. Das bedeutet, dass jede Tabelle mit der gleichen Farbe in der ersten Zeile und dann in der zweiten Zeile für jede Tabelle auf der Seite beginnen sollte.
Irgendwelche Vorschläge?
Thx!
Sie könnten wahrscheinlich einen Selektor für die Tabelle verwenden und dann die zu färbenden Zeilen finden, zB:
%Vor% Verwenden Sie :nth-child()
( :nth-child(odd)
und :nth-child(even)
) im Gegensatz zu :odd
oder :even
.
Die :odd
und :even
sind eigentlich 0-basiert, dh ungerade Zeilen sind 0,2,4 etc. und umgekehrt und werden verwendet, um ungerade und gerade Übereinstimmungen in der vollständigen umbrochenen Menge zu erhalten.
Sehen Sie sich diese Arbeitsdemo an, um dies zu demonstrieren.
nth-child()
führt die Auswahl auf Basis eines übergeordneten Elements durch.
Das Problem ist, dass die .events-table tr
selectors eine Liste von tr
s zurückgeben, unabhängig davon, ob sie zur selben Tabelle gehören. Die Selektoren :even
und :odd
werden auf die vollständige Liste angewendet.
Wenn Sie keine unglaublich große Anzahl an Tabellen haben, können Sie einfach IDs anstelle von Klassen verwenden.
%Vor% Die Selektoren "ungerade" und "gerade" sind jQuery-spezifische "Erweiterungen". Wie von bluenote erwähnt, scheinen sie auf einer Liste von allen Elementen des Zieltyps zu operieren (in Ihrem Fall alle tr
in .events-table
.
Alternativen sind:
Beschränken Sie den Selektor auf den Tabellenkontext, indem Sie das Tabellenelement als zweites Argument übergeben $('tr:odd', mytable).css({})
Verwenden Sie den "echten" css nth-child-Selektor $('.events-table tr:nth-child(even)').css()
, achten Sie jedoch auf Cross-Browser-Kompatibilitätsprobleme.
Ordnen Sie den entsprechenden Zeilen eine "ungerade" oder "gerade" Klasse zu und richten Sie diese explizit aus.