117 votes

jquery, trouver l'élément suivant par classe

Comment puis-je trouver l'élément suivant par classe.

J'ai essayé avec $(obj).next('.class'); mais cela renvoie des classes uniquement dans $(obj) parent. J'ai besoin de prendre l'élément suivant n'importe où dans le code par le nom de la classe. Parce que mon code ressemble à

<table>
<tr><td><div class="class">First</div></td></tr>
<tr><td><div class="class">Second</div></td></tr>
</table>

Est-ce possible ?

170voto

Nick Craver Points 313913

Dans ce cas, vous devez aller jusqu'au <tr> puis utiliser .next() comme ceci :

$(obj).closest('tr').next().find('.class');

Ou s'il peut y avoir des rangées entre les deux sans que le .class à l'intérieur, vous pouvez utiliser .nextAll() comme ceci :

$(obj).closest('tr').nextAll(':has(.class):first').find('.class');

0 votes

Il serait plus facile de faire ceci : $(obj).closest('tr').nextAll('.class')[0] ;

2 votes

@StuR - cela ne fonctionnerait pas ici, puisque .nextAll() ne regarde que les éléments frères et sœurs. Vous avez besoin de quelque chose qui regarde les descendants pour trouver le prochain <div> que la question veut.

1 votes

Et si l'on voulait obtenir un attribut de l'objet HTMLO retourné ? Comme un $(obj).closest('tr').nextAll('.class')[0].attr('data-attribu‌​te');

28voto

plavozont Points 9

Pour trouver l'élément suivant de la même classe :

$(".class").eq( $(".class").index( $(element) ) + 1 )

17voto

Morteza Manavi Points 20486

Vous ne pouvez pas utiliser next() dans ce scénario, si l'on regarde le fichier documentation il est dit :
Next() Obtenez le le frère ou la sœur immédiatement suivant(e) de chaque élément dans l'ensemble des éléments appariés. Si un sélecteur est fourni, il récupère le prochain élément frère qui correspond au sélecteur.

donc si le second DIV était dans le même TD alors vous pourriez coder :

// Won't work in your case
$(obj).next().filter('.class');

Mais comme ce n'est pas le cas, je ne vois pas l'intérêt d'utiliser next(). Vous pouvez coder à la place :

$(obj).parents('table').find('.class')

7 votes

Mais comment trouver l'élément suivant ? .find renvoie tous les éléments.

0 votes

Vous avez obtenu le parent qui a les deux éléments, et maintenant vous pouvez rechercher l'élément que vous voulez. Je viens de m'aider

0voto

Sergey Soroka Points 1

Pour trouver l'élément suivant par nom de balise

  function findNext(start, tag)
    {
      while(start.nodeName !== tag)
      {
            start = start.nextElementSibling;
      }
      return start;
    }

0voto

user2672987 Points 21

Étant donné un premier sélecteur : SélecteurA vous pouvez trouver le prochain match de SélecteurB comme ci-dessous :

Exemple avec le survol de la souris pour changer la bordure :

$("SelectorA").on("mouseover", function() {
    var i = $(this).find("SelectorB")[0];
    $(i).css({"border" : "1px"});
    });
}

Exemple d'utilisation générale pour modifier border-with :

var i = $("SelectorA").find("SelectorB")[0];
$(i).css({"border" : "1px"});

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X