[英]script in Javascript or Jquery for click event
I started it in javascript but if someone have better in Jquery i'll take it.我是用 javascript 开始的,但如果有人在 Jquery 方面做得更好,我会接受它。 I explain the context: i have a few questions and each ones has answers, i would like to click on a question and then the answers appear.
我解释了上下文:我有几个问题,每个问题都有答案,我想单击一个问题,然后出现答案。 I already did this:
我已经这样做了:
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";
}
}
the problem is that the only one works but not others.问题是只有一个有效,但其他无效。
here is the html code这是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>
Here's the update vanilla JS solution:这是更新vanilla 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");
});
Using jQuery you can do this:使用 jQuery,您可以执行以下操作:
$('.question').click(function() {
var index = $(this).parent().index();
$('.item_group_resultat').eq(index).toggle().siblings().hide();
});
$(this).parent().index()
will get the index of clicked .question
$(this).parent().index()
将获得被点击的.question
的索引toggle()
will toggle between hide and show for the item_group_resultat
present in the same index but inside different div.toggle()
将在隐藏和显示之间切换,以显示相同索引中但在不同div 中的item_group_resultat
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.