2015-01-01 5 views
7

Das Dokument I Parsen sind hat die folgenden zwei Arten von td Tags (unter anderen Instanzen von td Tags):CSS-Selektoren für das Ausschließen von Attribute Anwesenheit

<td align="right" nowrap bgcolor="#A1C87A">...</td> 

<td align="right" nowrap>...</td> 

Wie schreibe ich einen Selektor, der nur den zweiter wählt Typ, und schließen Sie alle anderen td Tags aus?

document.css('td:not([bgcolor="#A1C87A"])') 

schließt die erste Art, enthält die zweite Art sowie alle anderen td auch Tags.

document.css('td[align="right"][nowrap]') 

schließt alle anderen td Tags, enthält aber beide oben genannten Typen.

document.css('td:not([bgcolor="#A1C87A"])[align="right"][nowrap]') 

Sie auch die :not nach den anderen setzen konnte (es:

+1

Schritt 1 wäre, aktuellen HTML-Code zu schreiben, der die Attribute align und bgcolor nicht enthält. Versuchen Sie es stattdessen mit CSS. – j08691

+3

Das OP hat wahrscheinlich keine Kontrolle über das HTML. Was wäre der Sinn, HTML zu analysieren, das du kontrollierst? –

+0

@the Tin Man: So können die Leute mit dem Finger wackeln und dir sagen, was du stattdessen tun solltest, natürlich. – BoltClock

Antwort

9

Sie können einfach kombinieren die :not Wähler mit den anderen Attributselektoren genug sein, muss nicht direkt neben dem Elementnamen stehen):

document.css('td[align="right"][nowrap]:not([bgcolor="#A1C87A"])') 

Diese werden beide alle td Elemente auswählen, die bgcolor="#A1C87A" und nowrap haben, aber nicht align="right" haben, was Sie suchen.

+0

Danke! Ging mit 'td [align =" right "] [nowrap]: nicht ([bgcolor])' nachdem ich eine andere Instanz von 'bgcolor =" white "gefunden hatte, die ich ausschließen musste. –

0

td:not([align="right"][nowrap][bgcolor]) sollte für das, was Sie wollen

+0

Danke. Dies scheint nicht alle anderen td-Tags auszuschließen. –

0
td[nowrap][bgcolor] ~ td[nowrap] { code }; 
+0

Danke. Sieht so aus, als würde dies alle "td" -Tags mit den Attributen "align", "bicolor" und "nowrap" beinhalten. –