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

99
Views
Múltiples colapsos de arranque y eficiencia de jquery/javascript al alternar una pantalla

A menudo uso un ícono de intercalación para mostrar si un colapso en Bootstrap 5 está abierto o cerrado.

Por ejemplo, tendré un html como este:

 <h4 class="border" role="button" data-bs-toggle="collapse" href="#plinks"> <i id="plinks-closed" class="fa fa-caret-right"></i> <i id="plinks-open" style="display:none;" class="fa fa-caret-down"></i> Plinks </h4>

y algunos js como este para cambiar el ícono de intercalación cuando se abre o cierra el colapso:

 $('#plinks').on('show.bs.collapse', function () { $( "#plinks-closed").hide(); $( "#plinks-open").show(); }); $('#plinks').on('hide.bs.collapse', function () { $( "#plinks-closed").show(); $( "#plinks-open").hide(); });

A veces tengo muchos de estos y uso muchos ID diferentes y secciones js para que funcionen, y todas esas secciones js para cada ID parecen un poco desordenadas e ineficientes.

Lo que estoy buscando es una forma más universal, no específica de identificación, de tomar el cursor derecho e intercambiarlo por el cursor izquierdo en un elemento que asigno .caret-collapse. Rellenaría automáticamente el "intervalo de intercalación cerrado" al cargar y luego lo cambiaría automáticamente por el "intervalo de intercalación abierto" cuando se abra el colapso.

Me imagino que el html se vería así:

 <h4 class="border caret-collapse" role="button" data-bs-toggle="collapse" href="#plinks"> <span class="caret-collapse-container"></span> Plinks </h4>

En cuanto al js, supongo que verificaría el clic en .caret_collapse y luego haría algún tipo de búsqueda "secundaria" para el contenedor .caret-collapse y agregaría/eliminaría el código del icono, pero he tenido No tuve suerte haciendo que algo así sucediera y pensé en preguntar aquí en lugar de frustrarme más.

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Lo estás complicando demasiado. Por un lado, evite las identificaciones en CSS y JS siempre que sea posible. No permiten la reutilización. Por otro lado, solo puede apuntar a clases para alternar desde el elemento de colapso.

Esta demostración no funciona, posiblemente debido a un marcado defectuoso, pero le da una idea.

 const myEls = document.querySelectorAll('[data-bs-toggle="collapse"]'); myEls.forEach(el => { el.addEventListener('shown.bs.collapse', function() { el.find('i').classList.toggle('fa-caret-right'); el.find('i').classList.toggle('fa-caret-left'); }); });
 <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous"> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css" integrity="sha512-Fo3rlrZj/k7ujTnHg4CGR2D7kSs0v4LLanw2qksYuRlEzO+tcaEPQogQ0KaoGN26/zrn20ImR1DfuLWnOo7aBA==" crossorigin="anonymous" referrerpolicy="no-referrer" /> <h4 class="border" role="button" data-bs-toggle="collapse" href="#plinks"> <i class="fa fa-caret-right"></i> Plinks </h4> <div class="collapse" id="plinks"> <div class="card card-body"> Some placeholder content for the collapse component. This panel is hidden by default but revealed when the user activates the relevant trigger. </div> </div> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-ka7Sk0Gln4gmtz2MlQnikT1wXgYsOg+OMhuP+IlRH9sENBO0LRn5q+8nbTov4+1p" crossorigin="anonymous"></script>

about 4 years ago · Juan Pablo Isaza Report
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!