2010-10-12 14 views
12

Ho una tabella con più righe e ogni riga contiene tre celle. Ogni cella contiene una casella di testo, in modo che appaia simile al seguente:In JQuery come posso ottenere la cella della tabella adiacente?

XXXX XXXX XXXX 

sull'evento keyup della prima casella di testo, voglio il suo contenuto da copiare nella seconda casella di testo, ma non il terzo testo.

evento my keyup Posso ottenere un riferimento alla prima casella di testo. Fare .parent() mi darà la cella, e se voglio, fare di nuovo .parent() mi darà la riga.

Quale JQuery posso utilizzare per ottenere la casella di testo adiacente?

+0

Cosa succede se si è sull'ultima cella della riga? selezioni la prima cella nella riga successiva? Cosa succede nell'ultima cella dell'ultima riga? –

risposta

29

È possibile utilizzare .next() per ottenere il successivo fratello, in questo modo:

var nextTD = $(this).closest("td").next(); 
//for your case: 
$(this).closest("td").next().find("input").val($(this).val()); 

.parent() lavora troppo, .closest() è solo un po 'più flessibile, per voi potrebbe cambiare il markup e che sarebbe ancora andare al più vicino <td> genitore.

+0

più vicino ... wow ... c'è qualcosa a cui queste persone di JQuery non hanno pensato? :) – NibblyPig

+2

@ SLC - Il DOM attraversamento è un'area abbastanza forte per la biblioteca, ci sono * molte * funzioni per spostarsi, date un'occhiata qui: http://api.jquery.com/category/traversing/tree-traversal/ –

+0

Sembra che il più vicino ('td') restituisca null Non sono sicuro del perché ... – NibblyPig

2

Dal .parent()<td>, utilizzare next() per andare al prossimo <td>, quindi .children('input') per ottenere il bambino <input> elemento.

Quindi si finisce con qualcosa di simile nel gestore .

$(this).parent().next().children('input').val(this.value); 
0

Dare una prova alla funzione next(). Questo seleziona il fratello successivo dell'elemento selezionato.

Problemi correlati