jQuery trouver next et prev élément
J'essaie de trouver un next
ou prev
élément de l'élément courant. Mais next()
et prev()
fonction ne peut fonctionner que dans une portée, il ne peut pas accéder à l'extérieur. Pour un exemple de ceci est ce que je veux réaliser:
<ul id="ul1">
<li>1</li>
<li>2</li>
<li>3</li>
<li>
<ul id="ul2">
<li>4</li>
<li>
<ul id="ul3">
<li>5</li>
<li>6</li>
</ul>
</li>
<li>7</li>
<li>8</li>
</ul>
</li>
<li>9</li>
</ul>
Si l'élément courant est ul1
, l'élément suivant est <li>1</li>
, prev élément est null.
Si l'élément courant est <li>1</li>
, l'élément suivant est <li>2</li>
, prev élément est ul1
Si l'élément courant est <li>8</li>
, l'élément suivant est <li>9</li>
, prev élément est <li>7</li>
- et si l'élément courant
<li>3</li>
? aussi<li>4</li>
?? - non, ce serait la
<li>
qui est le parent de#ul2
Vous devez vous connecter pour publier un commentaire.
Tout d'abord, ce fut un très soignée problème. Merci de poster!
Que j'ai accompli cela avec un enchaînés jQuery déclaration. La seule chose c'est, si vous exécutez
previous()
sur le hautul
vous aurezbody
. Qui, je pense, techniquement fait du sens. Toutefois, si ce n'est pas le comportement souhaité, voir ma mise à jour ci-dessous.Utilisation:
next("#ul3")
retourne<li>5</li>
Suivante:
Précédent:
Mise à jour Si vous souhaitez limiter le haut du nœud précédent peut être, vous pouvez faire:
http://jsfiddle.net/andrewwhitaker/n89dz/
Une autre mise à Jour: Voici un plugin jQuery pour des raisons de commodité:
Élargi exemple ici: http://jsfiddle.net/andrewwhitaker/KzyAY/
Ce un problème intéressant! On dirait que vous êtes l'aplatissement de la structure récursive de HTML, de sorte que c'est la boucle-mesure - je peux le voir venir dans maniable.
Vous pouvez résoudre le problème par la rupture
.next()
bas, dans les cas suivants:next()
est le premier enfant.next()
est le même que jQuery.next()
next()
est que les parents du frère suivantnext()
estnull
Code (en l'appelant
flatNext
pour préserver original jQuery.next
comportement):Et
$.fn.flatPrev
devrait suivre..En fonction de votre jeu de données, vous pouvez aplatir un peu le tout (en supposant
$.find
est stable, ce qui, je crois), comme ceci:L'élément suivant après
ele[3]
estele[4]
quel que soit le niveau d'indentation.Exemple http://jsfiddle.net/xRpmL/