[英]Streamlining code for selective jQuery toggling of list items
I'm trying to make a quiz powered by PHP and jQuery. 我正在尝试通过PHP和jQuery进行测验。 Below is an example of my HTML:
以下是我的HTML的示例:
<ul class="Answers UL1">
<li class="Answer A"></li>
<li class="Answer B"></li>
</ul>
<ul class="Answers UL2">
<li class="Answer A"></li>
<li class="Answer B"></li>
</ul>
<script>
$(document).ready(function(){
$(".UL1 li.A").click(function(){
$(".UL1 li.A").toggleClass("selected");
});
});
</script>
If someone clicks on the first list item (li.A) in the first question (ul.UL1), the class "selected" will be appended to that item... 如果有人单击第一个问题(ul.UL1)中的第一个列表项(li.A),则“选择的”类将附加到该项...
<li class="Answer A selected"></li>
However, I want to display all ten questions and the associated answers simultaneously. 但是,我想同时显示所有十个问题和相关的答案。 That means I'd have to write 40 JS scripts to cover each possible combination...
这意味着我必须编写40个JS脚本来涵盖每种可能的组合...
<script>
$(document).ready(function(){
$(".UL1 li.A").click(function(){
$(".UL1 li.A").toggleClass("selected");
});
});
// 38 similar scripts in between!
$(document).ready(function(){
$(".UL10 li.D").click(function(){
$(".UL10 li.D").toggleClass("selected");
});
});
</script>
I just wondered if there's some way to condense or streamline my code, using PHP, jQuery or CSS. 我只是想知道是否存在使用PHP,jQuery或CSS压缩或简化代码的方法。
Please try this class assignment instead: 请尝试以下课堂作业:
<ul class="Answers UL">
<li class="Answer A"></li>
<li class="Answer B"></li>
</ul>
<ul class="Answers UL">
<li class="Answer A"></li>
<li class="Answer B"></li>
</ul>
Then the following script (only one) should be enough to cover the situation: 然后,以下脚本(仅一个)应该足以解决这种情况:
<script>
$(document).ready(function(){
$(".UL li").click(function(){
$(this).toggleClass("selected");
});
});
</script>
Here is a simple JS Fiddle to show this working (I hope the way you needed). 这是一个简单的JS小提琴,用于演示此工作方式(希望您采用所需的方式)。
I hope this helps in any way. 我希望这会有所帮助。
This is how I would do it 这就是我会做的
HTML 的HTML
<ul class="Answers">
<li class="1-A" id="1">1 A</li>
<li class="1-B" id="1">1 B</li>
</ul>
<ul class="Answers">
<li class="2-A" id="2">2 A</li>
<li class="2-B" id="2">2 B</li>
</ul>
JS JS
$(".Answers li").click(function () {
$("." + this.id + "-A").removeClass("selected");
$("." + this.id + "-B").removeClass("selected");
$(this).addClass("selected");
});
JSFIDDLE http://jsfiddle.net/w7x1hgq3/4/ JSFIDDLE http://jsfiddle.net/w7x1hgq3/4/
Updated 更新
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.