2009-11-04 20 views
11

Vorrei selezionare un elemento all'interno di td di uno dei miei tavoli ma non capisco veramente la sintassi. Questo è quello che ho provato:JQuery seleziona un elemento all'interno di td

$("table > td:#box") 

Questo è un esempio della mia struttura della tabella:

<div id="main"> 
<div id="today"> 
    <table id="list" width="100%" cellpadding="4" cellspacing="0" border="0" style="font-size: 10px; border-collapse:collapse;"> 
    <tr id="109008"> 
    <td class="tdstd"> 
    <a class="box" href="link"></a> 
    </td> 

O DI DOM Inspector di Chrome:

alt text

+0

Si prega di inviare un pezzo rilevante del codice HTML e di dire quale parte esattamente vuoi andare a uscire da esso. – BalusC

+0

Forse puoi mostrare uno snippet di HTML con la tabella e l'elemento. L'elemento è un div con id "box"? –

+0

per capire cosa ti serve - hai testo e vuoi ottenere il "testo" o "id"? – cupakob

risposta

17

Bene, "#box "indica un oggetto DOM con l'id" box ", in quanto è un ID univoco. Puoi selezionare quello direttamente. Ma il tuo codice suggerisce di avere diversi elementi con l'id "box" che devi cambiare. Si dovrebbe assegnare una classe per il vostro elemento all'interno del TD, o se è unico essendo l'unico DIV o SPAN nel box, è possibile accedere in questo modo:

$("table td .box") 

Si noti che la ">" Selettore significa che TD deve essere un figlio diretto di TABLE e suppongo che tu abbia almeno un livello TR intermedio, quindi non funzionerà neanche. Il mio esempio sopra corrisponde a ogni elemento con la "scatola" di classe all'interno di qualsiasi TD che è un bambino per qualsiasi TABELLA.

Ovviamente vorrei impostare una classe sul tavolo pure, e usare qualcosa come questo:.

$("table.boxes td .box") 

Solo così non si seleziona casualmente le cose al di fuori del campo di applicazione che si desidera lavorare in


ora avete aggiunto HTML in modo sto modificando la mia risposta:

$("table#list a.box") 
+2

+1 ma ha già un id sul tavolo che è considerevolmente più efficiente in ogni caso - $ ('# lista td a.box') è la soluzione "corretta" qui – annakata

+0

Corretta, ma io di solito uso il nome del tag quando fai selezioni gerarchiche in modo che possa vedere solo quale parte della pagina sto selezionando. Se l'ID fosse stato "tablelist", non lo avrei, ma "list" è così generale che potrei essere confuso se il mio codice jQuery funzionasse a lungo. Ma tutto ciò che hai detto, sei ovviamente corretto :) – Sandman

1
$("table tr td .box") 

Dovrebbe fare il trucco.

-2

non sono sicuro, ma credo che, è necessario $("td#box") ...

+1

questo non è giusto - # significa selettore di ID e non c'è nessun elemento con un ID di "box" figuriamoci un td con tale – annakata

+0

all'inizio era postet solo questo $ ("table> td: #box") e non una tranquillità di codice :) – cupakob

+0

sì ho notato che - ecco perché non ti ho minimizzato, semplicemente commentato :) – annakata

0

Questo selettore ...

table td a.box 

dice jQuery per trovare il tag a con un attributo class che contiene " scatola". E questo tag a deve trovarsi all'interno di uno td all'interno di uno table.

9

Il selettore più efficiente sarebbe:

$('#list').find('a.box'); 

o:

$('a.box', $('#list')[0]); 

selezionando la tabella id prima si è impostato il campo di applicazione a proprio tavolo e poi è possibile cercare l'elemento di cui hai bisogno in quel tavolo.

Il secondo selettore è lo stesso, si seleziona qualcosa e si imposta lo scope come secondo parametro.

È più semplice leggere il primo.

Problemi correlati