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

196
Visualizações
¿Cómo puedo evitar el bucle infinito al reformatear el hash de URL con el evento 'hashchange' de Jquery?

Antecedentes del problema

Configuré mi página web para usar identificadores con el prefijo #s- para diferenciar los enlaces ancla de otros identificadores de página. La window.location.hash cambia a hash, lo que mueve el marco al contenido en foco, pero también activa el hashchange de cambio de hash y provoca un bucle.

lo que he probado

Lo tengo funcionando cada vez que el hash ha cambiado, pero la única instancia en la que no funciona es cuando se presionó el mismo enlace (ya que uso esto en la condición para detener el ciclo infinito) . El código para esto era:

 $(window).on('hashchange', function(e) { if ($(location).attr('hash') != last_hash) { manageHash() } });

Lo que quiero

Me gustaría estar a punto de encontrar una condición o método que permita a los usuarios seleccionar un enlace para cambiar el hash, pero también permitirles volver a seleccionar el mismo enlace tantas veces como quieran sin causar un bucle.

JS

 last_hash = '' function manageHash() { var hash = $(location).attr('hash'); if($('#s-'+hash.substring(1)).length != 0 && '#s-'+hash.substring(1) != '#s-' ) { last_hash = hash window.location.hash = '#s-'+hash.substring(1); } } $(window).on('hashchange', function(e) { if ($(location).attr('hash') != last_hash) { manageHash() } }); $(document).ready(function() { manageHash() })

HTML

 <div class="contentSubSectionContainer contentSubSection" id="s-{{ subsection.slug }}"> <h2 class="contentSubSectionFont1Bold">{{ subsection.sub_section_title }}:</h2> <div class="contentSubSectionContentFont1"> {{ subsection.content_rendered|safe }} </div> </div>
about 4 years ago · Juan Pablo Isaza
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