Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

190
Views
¿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
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!