скрипт в Javascript или Jquery для события клика - PullRequest
0 голосов
/ 26 февраля 2020

Я начал это в javascript, но если у кого-то будет лучше в Jquery, я возьму это. Я объясняю контекст: у меня есть несколько вопросов, и у каждого есть ответы, я хотел бы нажать на вопрос, а затем появляются ответы. Я уже сделал это:

document.querySelector(".question").onclick = function() {
if (window.getComputedStyle(document.querySelector('.item_group_resultat')).display=='none'){
document.querySelector(".item_group_resultat").style.display="block";
} 
else {
document.querySelector(".item_group_resultat").style.display="none";
}
}

проблема в том, что работает только один, а другие нет.

вот код html

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
</head>
<body>
 <div class="content">
        <h1 class="titre"></h1>
        <div class="navigation" id="style-7">
            <ul class="item_group">
                <li class="item titre"></li>
                <li class="item">
                    <a class="question" href="#"></a>
                </li>
                <li class="item">
                    <a class="question" href="#"></a>
                </li>
                <li class="item">
                    <a class="question" href="#"></a>
                </li>
                <li class="item">
                    <a class="question" href="#"></a>
                </li>
                <li class="item">
                    <a class="question" href="#"></a>
                </li>
            </ul>
        </div>
        <div class="resultat">
            <ul class="item_group item_group_resultat">
                <li class="item titre_resultat"></li>
              <li class="item content_resultat"></li>
            <ul class="item_group item_group_resultat">
                <li class="item titre_resultat"></li>
                <li class="item content_resultat"></li>
            </ul>
            <ul class="item_group item_group_resultat">
                <li class="item titre_resultat"></li>
                <li class="item content_resultat"></li>
            </ul>
            <ul class="item_group item_group_resultat">
                <li class="item titre_resultat"></li>
                <li class="item content_resultat"></li>
            </ul>
            <ul class="item_group item_group_resultat">
                <li class="item titre_resultat"></li>
                <li class="item content_resultat"></li>

        </div>
    </div>
</body>
</html>

Ответы [ 2 ]

0 голосов
/ 26 февраля 2020

Используя jQuery, вы можете сделать это:

$('.question').click(function() {
   var index = $(this).parent().index();
   $('.item_group_resultat').eq(index).toggle().siblings().hide();
});
  • $(this).parent().index() получит индекс нажатых .question
  • , а toggle() будет переключаться между скрыть и показать для item_group_resultat, присутствующего в том же индексе, но внутри другого div.
0 голосов
/ 26 февраля 2020

Вот обновление ванильного JS решения:

<div class="content">
        <h1 class="titre"></h1>
        <div class="navigation" id="style-7">
            <ul class="item_group">
                <li class="item titre">Q</li>
                <li class="item">
                    <a class="question" href="#">1</a>
                </li>
                <li class="item">
                    <a class="question" href="#">2</a>
                </li>
                <li class="item">
                    <a class="question" href="#">3</a>
                </li>
                <li class="item">
                    <a class="question" href="#">4</a>
                </li>
                <li class="item">
                    <a class="question" href="#">5</a>
                </li>
            </ul>
        </div>
        <div class="resultat">
            <ul class="item_group item_group_resultat">
                <li class="item titre_resultat">1</li>
              <li class="item content_resultat">1</li>
            </ul>
            <ul class="item_group item_group_resultat">
                <li class="item titre_resultat">2</li>
                <li class="item content_resultat">2</li>
            </ul>
            <ul class="item_group item_group_resultat">
                <li class="item titre_resultat">3</li>
                <li class="item content_resultat">3</li>
            </ul>
            <ul class="item_group item_group_resultat">
                <li class="item titre_resultat">4</li>
                <li class="item content_resultat">4</li>
            </ul>
            <ul class="item_group item_group_resultat">
                <li class="item titre_resultat">5</li>
                <li class="item content_resultat">5</li>

        </div>
    </div>
div {
  border: 1px solid black;
  padding: 20px;
}
.question {
  border: 1px solid black;
  padding: 0 40px;
}
.item_group_resultat {
  display: none;
}
.active {
  display: block;
}

document.querySelector(".navigation").addEventListener("click", function(e){

   let currentIdx;
   Array.from(this.querySelectorAll(".question")).some( (q,idx) => ( q === e.target ) ? ( currentIdx = idx, true ) : false );
   let prev = document.querySelector(".item_group_resultat.active");
   document.querySelectorAll(".item_group_resultat")[currentIdx].classList.toggle("active");
   prev && prev.classList.remove("active");

});

Codepen

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...