2013-02-22 5 views
15

Non so se c'è un selettore CSS può fare lo stesso come la linea di seguito (codice jQuery):Esiste un selettore CSS standard simile a: eq() in jQuery?

.tab_cadre_central .top:eq(0) table tbody tr td table tbody tr:eq(3) 

ho provato in CSS qualcosa di simile:

.tab_cadre_central .top::nth-child(0) table tbody tr td table tbody nth-child:eq(3) { 
    display:none; 
} 

ma non ha funzionato

+0

Per rispondere alla domanda, no, non esiste un equivalente CSS standard per ': eq()' in jQuery. Vedi [differenza jQuery tra: eq() e: nth-child()] (http://stackoverflow.com/questions/7039966/jquery-difference-between-eq-and-nth-child) – BoltClock

risposta

33

Mentre il :eq() jQuery utilizza 0 a base di indicizzazione, :nth-child() utilizzi 1 a base di indicizzazione, quindi è necessario incrementare gli indici in modo appropriato:

.tab_cadre_central .top:nth-child(1) table tbody tr td table tbody tr:nth-child(4) 

Ma si dovrebbe davvero pensare a refactoring che il selettore ...


⚠ Vale la pena notare che sebbene :eq() e :nth-child() possano comportarsi in modo simile, non sono certamente uguali. :eq() selezionerà l'elemento esimo n + 1 nel set, mentre :nth-child() selezionerà tutti elementi del set che sono il n ° figlio dei rispettivi genitori. ⚠

<div> 
    <span></span> 
    <span></span> 
</div> 
<div> 
    <span></span> 
</div> 

Il selettore div span:nth-child(1) preleverà due elementi, mentre div span:eq(0) selezionerà sola.

+0

concordo, questo fa guarda un po 'noioso – kabuto178

+0

sì, grazie per le informazioni ^^ – user2077308

+0

Questa non è l'unica differenza. In effetti, a meno che HTML non sia estremamente limitato, questo selettore può abbinare più elementi del necessario - o * non corrisponde affatto *. L'OP dovrà assicurarsi che il loro codice HTML corrisponda effettivamente a entrambi i selettori. – BoltClock