2009-09-11 16 views
10

Ho bisogno di impostare lo stato attivo sull'elemento che è immediatamente successivo (e in altri casi immediato precedente) sull'elemento corrente.jQuery: ottieni immediatamente l'elemento successivo dopo l'elemento corrente

Ad esempio:

<li>item1</li> <- prev element (get this element) 
<li>item1</li><- current element 
<li>item1</li> <- next element (get this element) 
<li>item1</li> 

Questo è quello che ho usato

var curr = (event.target).next(); 
$(curr).trigger('focus'); 

quando controllo il valore di curr in Firebug mostra indefinito per qualche ragione.

risposta

1
var curr = (event.target).nextSibling; 
6

Sei all'interno di un gestore di eventi jquery? In tal caso, perché non utilizzare $(this).next() e/o $(this).prev()?

+0

e per quanto riguarda il bubbling degli eventi? – geowa4

+0

Domanda giusta. Dipenderebbe dal selettore originale usato per agganciare l'evento, che mancava dalla domanda. Bella risposta btw, +1 da parte mia –

21

Usa

$(event.target).next() 

per ottenere il successivo fratello. È anche possibile passare un'espressione alla funzione next. In questo modo selezionare il successivo fratello alla partita selettore:

$(event.target).next("p") 

È inoltre possibile utilizzare nextAll, che funziona allo stesso modo ma restituisce tutte le seguenti sublings. See more here. C'è anche, prev e prevAll, che sono gli analoghi per ottenere l'elemento precedente (s).

Fondamentalmente, eri molto vicino, hai solo bisogno di avvolgere event.target nell'oggetto jQuery, come event.target restituisce l'elemento reale.

Problemi correlati