• Empleos
  • Sobre nosotros
  • profesionales
    • Inicio
    • Empleos
    • Cursos y retos
  • empresas
    • Inicio
    • Publicar vacante
    • Nuestro proceso
    • Precios
    • Evaluaciones
    • Nómina
    • Blog
    • Comercial
    • Calculadora de salario

0

139
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>
almost 3 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 Nuestro proceso Comercial
Legal
Términos y condiciones Política de privacidad
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recomiéndame algunas ofertas
Necesito ayuda