【Jquery】Vue+Jquery判断单选题和多选题是否被选中且单选或多选后li class的切换

本文介绍了如何在Vue项目中利用HTML和JS处理单选和多选题目的样式切换。通过监听用户点击事件,动态修改li元素的class,实现单选时仅一个选项高亮,多选时可选多个选项并切换active样式。同时,代码还记录了用户的选择状态,更新题目是否已作答的标记。
摘要由CSDN通过智能技术生成

前言

近期在做一个有关用户考试的需求,用户在答题时有单选和多选,且单选或多选用的是同一的ul  li,只不过单选时候只能选择其中一项,多选可以选择多项,那么就会涉及到单选或多选选择后切换不同的样式的问题,如下为具体实现

实现 

1、先看一下html代码,注意li部分,li中定义了一个class(item.QuestionID),以及li自己的id,将会通过这两个来实现不同的切换

<!--内容 开始-->
	<div class="L-content L-examination-content">
		<div class="L-question-item" v-for="(item,index) in QuestionAnswerList">
			<h3 class="L-question-title d-flex">
				<i class="flex-shrink-0">{{index+1}}</i><span class="pl-3 flex-shrink-1">{{item.Title}}</span>
			</h3>
			<small class="L-tips">Tips: {{item.QuestionType}}</small>
			<ul class="row L-answer-list" :id="item.QuestionID">
				<li class="col-md-6 col-sm-12" v-for="(optionItem,optionIndex) in item.Options">
					<a href="#" :class="'L-answer-item '+item.QuestionID" :id="optionItem.OptionID"
						v-on:click="On_Click_SelectAnswer(item,optionItem)"><span>{{optionItem.OptionName}}.</span>
						<p>{{optionItem.Title}}</p></a></li>
			</ul>
		</div>
		<div class="mb-4 mt-4">
			<a class="btn btn-danger L-examination-btn d-flex align-items-center"
				v-on:click="On_Click_Submit($event)"><i class="iconfont icon-doubleright mr-2"></i>Submit</a>
			<button class="btn btn-dark L-examination-btn d-flex align-items-center"><i class="iconfont icon-reload mr-1"></i>Retest</button>
		</div>
	</div>
	<!--内容 结束-->

2、js代码,注意说明部分即可

 On_Click_SelectAnswer: function (item, optionItem) {
                var that = this;
                if (item.QuestionType == "Single choice") {//如果为单选,先将同样的class都去掉active样式,然后再将自己的也就是点击的加上active
                    $("." + item.QuestionID).removeClass("active");
                    $("#" + optionItem.OptionID).addClass("active");
                } else {//如果为多选通过toggleClass来回切换即可
                    $("#" + optionItem.OptionID).toggleClass('active');
                }
                var isAnswer = false;
                //这一段代码为当改题目选择答案后即作答后将会记录改题目已经做了,用到了循环所有li,如果有class active属性即代表已选择了答案
                $("." + item.QuestionID).each(function () {
                    if ($(this).hasClass('active')) {
                        isAnswer = true;
                        return;
                    }
                });
                if (!isAnswer) {
                    $("#nav" + item.QuestionID).addClass("active");
                } else {
                    $("#nav" + item.QuestionID).removeClass("active");
                }


            },

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一起来学吧

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值