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

167
Views
Svelte cómo vincular div dentro de cada lop para obtener una referencia usando esto

Necesito obtener una referencia a cada div creado dentro de cada ciclo en svelte, luego usaré la referencia para alternar la clase css de un div determinado cuando el usuario haga clic en el div anterior.

 let contentOptions; function handleClick(event) { contentOptions.classList.toggle("close"); } {#each items as item, i} <div class="titleOption" on:click={handleClick}> <img src="./assets/{item.icon}"/> <span>{item.label}</span> </div> <div class="content close" bind:this={contentOptions}>Content Option {i}</div> {/each}

La matriz de elementos tiene tres objetos, y siempre aparece el último div con el texto "Opción de contenido 2" a pesar de hacer clic en otro div.

¿Es posible vincular cada div por separado?

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

0

Puede resolver esto haciendo que contentOptions una matriz, enlace con el índice bind:this={contentOptions[i]} y use el índice dentro de la función para apuntar a la referencia correcta> REPL

 <script> const items = [{label: 'item1'}, {label: 'item2'}] let contentOptions = []; function handleClick(index) { contentOptions[index].classList.toggle("close"); } </script> {#each items as item, i} <div class="titleOption" on:click={() => handleClick(i)}> <span>{item.label}</span> </div> <div class="content close" bind:this={contentOptions[i]}>Content Option {i}</div> {/each} <style> .close { background: red; } </style>

Esta sería una forma alternativa sin la necesidad de una matriz adicional y el manejo del enlace y el índice REPL

 <script> const items = [{label: 'item1'}, {label: 'item2'}] function handleClick(event) { event.currentTarget.nextElementSibling.classList.toggle('close') } </script> {#each items as item, i} <div class="titleOption" on:click={handleClick}> <span>{item.label}</span> </div> <div class="content close">Content Option {i}</div> {/each} <style> .close { background: red; } </style>
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!