2015-01-01 66 views
7

Il documento che sto parsing ha le seguenti due stili di td tag (tra le altre istanze di td tag):selettori CSS per escludere dalla presenza attributo

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

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

Come faccio a scrivere un selettore che seleziona solo il secondo digita ed escludi tutti gli altri tag td?

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

esclude il primo tipo, comprende il secondo tipo più tutti gli altri td tag pure.

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

esclude tutti gli altri tag td, ma include entrambi i tipi sopra.

+1

Il passaggio 1 sarebbe quello di scrivere l'HTML corrente che non include gli attributi align e bgcolor. Prova invece CSS. – j08691

+3

L'OP probabilmente non ha alcun controllo sull'HTML. Quale sarebbe il punto di analisi del codice HTML che controlli? –

+0

@ the Tin Man: Quindi le persone possono muovere il dito contro di te e dirti cosa dovresti fare invece, ovviamente. – BoltClock

risposta

9

Si può semplicemente combinare il selettore di :not con gli altri selettori di attributo:

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

Si potrebbe anche mettere il :not dopo gli altri (che non deve essere proprio accanto al nome dell'elemento):

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

Questi entrambi selezionano tutti gli elementi td che hanno bgcolor="#A1C87A" e nowrap ma non hanno align="right", che è quello che stai cercando.

+0

Grazie! Sono andato con 'td [align =" right "] [nowrap]: not ([bgcolor])' dopo aver trovato un'altra istanza di 'bgcolor =" white "' che dovevo escludere. –

0

td:not([align="right"][nowrap][bgcolor]) dovrebbe essere sufficiente per quello che vuoi

+0

Grazie. Questo sembra non escludere tutti gli altri tag TD. –

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

Grazie. Sembra che questo includa tutti i tag 'td' con gli attributi' align', 'bicolor' e' nowrap'. –