Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

101
Visualizações
Cómo recorrer la función jQuery .next none -top

Estoy tratando de recorrer y desplazar automáticamente cada elemento de un grupo de elementos a la parte superior de la página con la función jQuery .next . Sin embargo, la función desplaza solo el primer elemento, se detiene y no se repite.

 $(function() { setInterval(function() { var $next = $('.per-account:first').next('.per-account'); var $first = $('.per-account:first'); if ($next.length) { $('html, body').animate({ scrollTop: $next.offset().top }, 1000); } else { $('html, body').animate({ scrollTop: $first.offset().top }, 1000); } }, 3000) });
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div class="per-account" style="height: 500px; width: 100%; background: red;"> </div> <div class="per-account" style="height: 500px; width: 100%; background: blue;"> </div> <div class="per-account" style="height: 500px; width: 100%; background: orange;"> </div> <div class="per-account" style="height: 500px; width: 100%; background: green;"> </div>

el primer elemento y se detiene. Cualquier idea de lo que estoy haciendo mal aquí.

Mi código se ve a continuación:

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Siempre obtienes el siguiente elemento después de :first , lo que significa que siempre es el segundo elemento, no el bucle.

Agregue una clase al elemento actual y luego obtenga el siguiente elemento después de eso.

 $(function() { setInterval(function() { var $current = $('.per-account.current') var $next = $current.next('.per-account'); if (!$next.length) { // wrap around to the beginning $next = $('.per-account:first'); } $current.removeClass('current'); $next.addClass('current'); $('html, body').animate({ scrollTop: $next.offset().top }, 1000); }, 3000) });
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div class="per-account current" style="height: 500px; width: 100%; background: red;"> </div> <div class="per-account" style="height: 500px; width: 100%; background: blue;"> </div> <div class="per-account" style="height: 500px; width: 100%; background: orange;"> </div> <div class="per-account" style="height: 500px; width: 100%; background: green;"> </div>

about 4 years ago · Juan Pablo Isaza Relatório

0

El siguiente código hará que funcione. Empezabas desde el primero en cada intervalo.

 $(function() { function runScroll(){ let $current = $('.per-account:first'); const id = setInterval(runInterval, 1000); function runInterval(){ if ( $current.next('.per-account').length ){ $current = $current.next('.per-account'); $('html, body').animate({ scrollTop: $current.offset().top }, 500); } else { clearInterval(id); } } } runScroll(); // Re-run to scroll again });
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div class="per-account" style="height: 500px; width: 100%; background: red;"> </div> <div class="per-account" style="height: 500px; width: 100%; background: blue;"> </div> <div class="per-account" style="height: 500px; width: 100%; background: orange;"> </div> <div class="per-account" style="height: 500px; width: 100%; background: green;"> </div>

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda