Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

79
Visualizações
toggle only one element in loop when clicked

I have a for each loop in blade file that display items .

What I want when one element name clicked only same item be toggle but my code toggle all items .

how to solve it?

the problem is my JavaScript code

var isHidden = true;

function loadToggleAction() {
  var sheet = document.createElement('style')
  if (!isHidden) {
    sheet.innerHTML = ".show {display:none;}";
  } else {
    sheet.innerHTML = ".show {display:block;}";
  }
  document.body.appendChild(sheet);
  isHidden = !isHidden;
}
<h2 class="lesson-h2" onclick="loadToggleAction()">
  lesson 1
</h2>

<a class="lesson-file" href="{{ " #play " }}">
  <img class="show-lesson" src="img.png" title="مشاهده آنلاین این درس" height="24" onclick="loadToggleAction()">

</a>

<div class="show">
  lesson 1 content


</div>


<h2 class="lesson-h2" onclick="loadToggleAction()">
  lesson 2
</h2>

<a class="lesson-file" href="{{ " #play " }}">
  <img class="show-lesson" src="img.png" title="مشاهده آنلاین این درس" height="24" onclick="loadToggleAction()">

</a>

<div class="show">
  lesson 2 content


</div>


<h2 class="lesson-h2" onclick="loadToggleAction()">
  lesson 3
</h2>

<a class="lesson-file" href="{{ " #play " }}">
  <img class="show-lesson" src="img.png" title="مشاهده آنلاین این درس" height="24" onclick="loadToggleAction()">

</a>

<div class="show">
  lesson 3 content


</div>

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

If you want to do this with CSS, you need to calculate an id to your lesson-h2 component while iterate (you can do this using the index in a for loop.

Once you do that, you can change the display style on the ID directly in your loadToggleAction() function (and not on the class as you do actually).

about 4 years ago · Juan Pablo Isaza Relatório

0

You need to delegate

I do not recommend creating styles since this is much simpler and works

document.getElementById('container').addEventListener('click', function(e) {
  e.preventDefault()
  const tgt = e.target.closest('a');
  if (tgt && tgt.classList.contains('lesson-file')) { 
    tgt.nextElementSibling.classList.toggle('hide')
  }
})
.hide { display:none; }
<div id="container">
  <h2 class="lesson-h2">
    lesson 1
  </h2>
  <a class="lesson-file" href="{{ " #play " }}">
    <img class="show-lesson" src="img.png" title="مشاهده آنلاین این درس" height="24" />
  </a>
  <div class="hide">
    lesson 1 content
  </div>
  <h2 class="lesson-h2">
    lesson 2
  </h2>
  <a class="lesson-file" href="{{ " #play " }}">
    <img class="show-lesson" src="img.png" title="مشاهده آنلاین این درس" height="24" />
  </a>
  <div class="hide">
    lesson 2 content
  </div>
  <h2 class="lesson-h2">
    lesson 3
  </h2>
  <a class="lesson-file" href="{{ " #play " }}">
    <img class="show-lesson" src="img.png" title="مشاهده آنلاین این درس" height="24" />
  </a>
  <div class="hide">
    lesson 3 content
  </div>
</div>

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda