2009-05-08 9 views

risposta

32
$("table:first > tr:first") 

o

$("table:first").find("tr:first") 

o

$("table:first").children("tr:first") 

o

$("table").eq(0).children("tr").eq(0) 

Quindi, se ho capito la domanda ... follow

$("table:eq(1) tr:has(table:eq(2))") 

si traduce in: ottenere qualsiasi TR di nella seconda tavola di se il TR ha un terzo tavolo

o

$("table").eq(1).children("tr:has(table:eq(2))") 
+0

Grazie a Chad, il suo funzionamento (solo seconda opzione). Ma la prossima domanda è se voglio selezionare qualsiasi riga della seconda tabella nella mia pagina se contiene 3 tabelle.Il comando che hai suggerito ha successo solo per la prima o l'ultima tabella; che dire dei tavoli intermedi. Grazie –

+0

jQuery è davvero flessibile e avrei bisogno di vedere la tua struttura html per fornire esempi accurati. Il primo esempio nel mio codice non funzionerebbe se, ad esempio, avessi i tag nella tabella. Si prega di postare qualche esempio di HTML e io posso montare i selettori –

+0

Suggerirei di scambiare '.children (" tr: first ")' per '.find ('> tbody> tr,> tr')' dato che [alcuni browser aggiungono 'tbody' a tutte le tabelle e altre no] (http://stackoverflow.com/questions/1858267/how-to-find-tr-inside-table-with-depth-1) – user568458

0

Anche se non jQuery specifico, fui presentato a dom selettori a questo w3c selectors page. È molto dettagliato ma ricco di esempi complessi.

+0

e cosa supporta l'ultima versione di jQuery attraverso il loro motore di selezione, Sizzle: http://wiki.github.com/jeresig/sizzle –

1

Utilizzando il metodo eq() di jQuery è possibile specificare l'indice dell'elemento che si desidera ottenere.
Questo selezionerà la prima riga della seconda tabella trovata nel DOM

$('table:eq(1) tr:first') 
+0

in realtà selezionerà la prima riga nella terza tabella. eq() è a base zero –

+0

Hai ragione Chad I tottaly se n'è dimenticato, risolto. – duckyflip

5

Qualcosa che si può utilizzare per selezionare la riga n-esima nella tabella n-esima:

$("table:eq(n) tr:eq(n)") 

con n benessere l'indice a base zero della tabella o tr.

Esempio:

$("table:eq(2) tr:eq(4)") 

ottiene il 5 ° fila del 3 ° tavolo.

2

La risposta di @ svinto è sicuramente il modo più breve, più rapido e semplice per raggiungere questo obiettivo. Se siete veramente occupa di prestazioni (ad esempio, selezionando all'interno di un complesso arbitrario per loop), questo potrebbe molto probabilmente rivelarsi un tantino più veloce:

$('tr').eq(0) 

Se non si desidera utilizzare solojQuery selettori e in realtà richiedono l'elemento DOM <TR>, è possibile utilizzare:

$('table')[0].rows[0] 

alternativa:

$('tr')[0] 
Problemi correlati