jquery, encontre o próximo elemento por classe

102

Como posso encontrar o próximo elemento por classe.

Eu tentei com, $(obj).next('.class');mas isso retorna classes apenas no $(obj)pai. Preciso levar o próximo elemento em qualquer lugar do código por nome de classe. Porque meu código parece

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

Isso é possível?

Alex
fonte

Respostas:

145

Neste caso você precisa ir até o <tr> então usar .next(), assim:

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

Ou se pode haver linhas intermediárias sem o .classinterior, você pode usar .nextAll(), assim:

$(obj).closest('tr').nextAll(':has(.class):first').find('.class');
Nick Craver
fonte
Seria mais fácil fazer isso: $ (obj) .closest ('tr'). NextAll ('. Class') [0];
StuR
2
@StuR - isso não funcionaria aqui, uma vez que .nextAll () apenas olha para elementos irmãos. Você precisa de algo que examine os descendentes para encontrar o próximo <div> que a pergunta deseja.
Nick Craver
1
E se quisesse obter um atributo desse HTMLObject retornado? Like an$(obj).closest('tr').nextAll('.class')[0].attr('data-attribute');
Dennis Braga
Você também pode precisar usar: .parent (). Next ("") se o elemento não tiver irmãos
shasi kanth
@NickCraver Você é incrível
O ESPÍRITO SANTO
23

Para encontrar o próximo elemento com a mesma classe:

$(".class").eq( $(".class").index( $(element) ) + 1 )
Plavozont
fonte
13

Você não pode usar next () neste cenário, se olhar a documentação que diz:
Next () Obtenha o irmão imediatamente seguinte de cada elemento no conjunto de elementos correspondentes. Se um seletor for fornecido, ele recupera o próximo irmão que corresponda ao seletor.

então, se o segundo DIV estivesse no mesmo TD, você poderia codificar:


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

Mas como não é, não vejo motivo para usar next (). Em vez disso, você pode codificar:

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

Morteza Manavi
fonte
6
Mas como ele encontra o próximo elemento. .find retornaria todos os elementos.
Shashwat Kumar