Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

191
Vistas
¿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 la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda