jQuery trouver les éléments suivants / prev d'une certaine classe, mais pas nécessairement les frères et sœurs
Le next, prev, nextAll et prevAll méthodes sont très utiles, mais pas si les éléments que vous essayez de trouver ne sont pas dans le même élément parent. Ce que je veux faire, c'est quelque chose comme ceci:
<div>
<span id="click">Hello</span>
</div>
<div>
<p class="find">World></p>
</div>
Lorsque la durée avec l'id click
est pressée, je veux correspondre à l'élément suivant avec la classe find
qui dans ce cas n'est pas un frère ou une sœur de l'élément cliqué donc next()
ou nextAll()
ne fonctionne pas.
source d'informationauteur Gnuffo1
Vous devez vous connecter pour publier un commentaire.
Je travaillais sur ce problème moi-même aujourd'hui, voici ce que je suis venu avec:
Donc dans votre exemple
vous pouvez maintenant trouver et manipuler le 'p' de l'élément à l'aide de
Je doute qu'il le fera bien sur des grandes structures, mais ici il est 🙂
De l'essayer. Il marquera votre Élément, créer un ensemble d'Éléments correspondant à votre sélecteur et de recueillir tous les Éléments de l'ensemble à la suite de votre élément.
MODIFIER
solution beaucoup plus simple en utilisant jquerys méthode de l'indice. l'élément que vous appelez la méthode à partir de besoins pour être sélectionnable par le même sélecteur si
gratuit la fonction de ce handicap, nous avons pu youse les navigateurs propre compareDocumentposition
EDIT 2
cela est beaucoup plus facile à l'aide de jQuery $.grep. voici le nouveau code
lors de la compression de noms de variables, il devient simple de deux liner.
Modifier 3
à l'aide des opérations bit à bit, cette fonction peut être encore plus rapide?
Ma solution consisterait à adapter votre balisage un peu de faire le jQuery beaucoup plus facile. Si ce n'est pas possible ou n'est pas un appel répondre, s'il vous plaît ignorer!
Je voudrais wrap "parent" wrapper autour de ce que vous voulez faire...
Maintenant, pour trouver le
find
:Cela vous donne la possibilité d'avoir tout type de balisage et de la hiérarchie que vous souhaitez à l'intérieur de l'emballage, j'ai suggéré, et encore de manière fiable trouver votre cible.
Bonne chance!
Je pense que la seule façon de résoudre ce problème est de faire une recherche récursive sur les éléments après l'élément courant. Il n'y a pas de solution simple à ce problème fournis par jQuery. Si vous ne souhaitez trouver des éléments dans les frères et sœurs de votre élément parent (comme c'est le cas dans l'exemple), il n'est pas nécessaire de faire une recherche récursive, mais vous avez à faire des recherches multiples.
J'ai créé un exemple (en fait, il n'est pas récursive) qui fait ce que vous voulez (je l'espère). Il sélectionne tous les éléments de la suite de l'actuel cliqué sur l'élément et les rend rouge:
L'expression suivante devrait (sauf erreurs de syntaxe!) trouver tous les frères et sœurs de la mère qui contiennent un
p.find
élément et ensuite trouver cesp.find
éléments et changer leur couleur bleue.Bien sûr, si votre structure est telle que
p.find
se produit dans un tout autre niveau de la hiérarchie (sœur d'un grand-parent par exemple), ça ne marchera pas.