js实现元素的多选,或单选功能

JavaScript08

js实现元素的多选,或单选功能,第1张

效果预览 

html中-css中 - 以ul 和 li标签双层结构为例 

js中

1,定义一个init方法, 完成处理数据 并把最后选中的数据返回

1.通过getArr方法,  挂载了li元素的点击事件liClick方法, 并返回处理好的数据arr,checkbox的话arr里面是多条选中的,radio则为单条

 通过array的特性来达到return返回的数据同步

2.根据传递过来的type类型判断是单选框还是复选框, 来调用不同的处理函数checkboxFun或radioFun

3.checkboxFun完成了复选框的一些数据处理操作  , , radioFun 完成了单选框的一些数据处理操作

2, 获取子元素集合, 并调用init函数, 

init函数调用并会返回一个newArr,   这个newArr就是最新的数据集合

这样就可以实现一个单选多选的功能了

有很多方法可以实现,不过要看你的具体需求,一般可以做成两类题目,选单选的时候显示单选的题目,多选的时候显示多选的题目;如果是想同一个题目变换单选和多选的话可以用Jquery来操作单选和多选的HTML:

首先在选项上绑定事件,然后在事件中获取当前选择的是单选还是多选,然后通过类选择器或者标签选择器来获取选项前面的选择按钮组,用循环进行遍历拿到每一个单选/多选按钮,然后用append()方法在拿到的按钮后面添加要变换的按钮,最后把拿到的按钮删掉。

思路就是这样,具体代码需要的话可以后面再贴上。

<HTML>

 <HEAD>

<script type="text/javascript" src="./jquery-1.11.1.js"></script>

<script type="text/javascript">

$(function(){

 var checkbox = $("#test :checkbox")

 $("#test :checkbox").click(function(){

var opchek = $(this)

var level = parseInt(opchek.attr("level"))

$.each(checkbox, function(){

var _this = $(this)

if(parseInt(_this.attr("level"))< level){

if(opchek.prop("checked")){

_this.prop("checked",true)//这个方法好像是1.8+的jquery才有的

_this.attr("disabled",true)

}else{

var prevLevel = level - 1

$("#test :checkbox[level='"+prevLevel+"']").attr("disabled",false)

}

}

})

})

})

</script>

 </HEAD>

 <BODY>

<div id="test">

<input type="checkbox" id="a" level="1">查看</input>

<input type="checkbox" id="b" level="2">添加</input>

<input type="checkbox" id="c" level="3">修改</input>

<input type="checkbox" id="d" level="4">完全控制</input>

</div>

 </BODY>

</HTML>