2009-09-11 15 views
10

Ich muss den Fokus auf das Element setzen, das direkt neben dem aktuellen Element ist (und in anderen Fällen direktes prev).jQuery: bekomme sofort das nächste Element nach dem aktuellen Element

Zum Beispiel:

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

Dies ist, was ich verwenden

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

wenn ich den Wert curr Check-in Firebug es aus irgendeinem Grunde nicht definiert zeigt.

Antwort

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

Sind Sie in einem jquery Event-Handler? Wenn ja, warum nicht $(this).next() und/oder $(this).prev() verwenden?

+0

und was ist mit Ereignisblasen? – geowa4

+0

Faire Frage. Es hängt von der ursprünglichen Auswahl ab, die verwendet wird, um das Ereignis zu haken, das in der Frage fehlte. Schöne Antwort übrigens, +1 von mir –

21

Verwenden

$(event.target).next() 

die nächsten Geschwister zu bekommen. Sie können auch einen Ausdruck an die next-Funktion übergeben. Dies wird die nächste Geschwister wählen Sie Selektor übereinstimmen:

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

Sie auch nextAll verwenden können, die die gleiche Art und Weise funktioniert, liefert aber alle folgenden sublings. See more here. Es gibt auch prev und prevAll, die die Analoga sind, um die vorherigen Elemente zu erhalten.

Grundsätzlich waren Sie wirklich in der Nähe, Sie müssen nur event.target in das jQuery-Objekt wickeln, da event.target das eigentliche Element zurückgibt.

Verwandte Themen