jQuery ungerade / gerade Selektoren für mehrere Elemente

8

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!

    
Mike 25.10.2009, 00:32
quelle

6 Antworten

12

Sie könnten wahrscheinlich einen Selektor für die Tabelle verwenden und dann die zu färbenden Zeilen finden, zB:

%Vor%     
John Boker 25.10.2009 00:39
quelle
6

Verwenden Sie :nth-child() ( :nth-child(odd) und :nth-child(even) ) im Gegensatz zu :odd oder :even .

%Vor%

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.

    
Russ Cam 25.10.2009 00:41
quelle
2

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%     
poezn 25.10.2009 00:39
quelle
1

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.

Rob Cowie 25.10.2009 00:54
quelle
1
%Vor%

ändert ungerade Zeilen für alle Tabellen auf der Seite, Sie können eine weitere für gerade

setzen     
neo 18.04.2011 18:01
quelle
0

Fügen Sie IDs zu Ihren Tabellen hinzu und aktualisieren Sie jeweils die CSS-Tabelle.

    
danjarvis 25.10.2009 00:38
quelle

Tags und Links