使用jQuery完成复选框的全选和全不选
要完成这个效果,必然要了解jQuery中对属性操作的方法:
-
attr()
:设置或返回被选元素的属性值。- 使用方法一:
$("xxx").attr("src");
——返回被选元素的src属性值 - 使用方法二:
$("xxx").attr("src","test.jpg");
——设置被选元素的src属性值 - 使用方法三:
$("xxx").attr({src:"test.jpg", alt:"Test Image"});
——为被选元素设置src和alt属性
- 使用方法一:
-
removeAttr()
:从每一个匹配的元素中删除一个属性,即移除属性。 prop()
:与attr()
方法类似,只不过它是新版本的方法。- 使用方法一:
$("xxx").prop("src");
——返回被选元素的src属性值 - 使用方法二:
$("xxx").prop("src","test.jpg");
——设置被选元素的src属性值 - 使用方法三:
$("xxx").prop({src:"test.jpg", alt:"Test Image"});
——为被选元素设置src和alt属性
- 使用方法一:
removeProp()
:与removeAttr()
方法类似,移除属性。addClass(class)
:为每个匹配的元素添加指定的类名,即添加某个样式。removeClass(class)
:从所有匹配的元素中删除全部或者指定的类,即移除某个样式。
下面按照如下步骤来使用jQuery完成对复选框的全选和全不选效果:
- 在页面中添加复选框
- 引入jQuery的js文件
- 编写jQuery的入口函数
- 点击上面的复选框,获得下面所有的复选框
- 修改下面所有的复选框的值
我摘出最重要的一个html文件——【data.html】:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | <! DOCTYPE html> < html > < head > < meta charset="UTF-8"> < title ></ title > < link rel="stylesheet" href="../css/style.css" /> < script type="text/javascript" src="../js/jquery-1.11.3.min.js" ></ script > < script > // 表格的隔行换色 $(function() { $("tbody tr:odd").addClass("odd"); $("tbody tr:even").addClass("even"); }); </ script > </ head > < body > < table id="tab1" border="1" width="80%" align="center"> < thead > < tr > < th >< input type="checkbox" id="selectAll" /></ th > < th >分类的ID</ th > < th >分类的名称</ th > < th >分类的描述</ th > < th >操作</ th > </ tr > </ thead > < tbody > < tr > < td >< input type="checkbox" name="ids" /></ td > < td >1</ td > < td >手机数码</ td > < td >手机数码</ td > < td >< a href="">修改</ a >|< a href="">删除</ a ></ td > </ tr > < tr > < td >< input type="checkbox" name="ids" /></ td > < td >2</ td > < td >电脑办公</ td > < td >电脑办公</ td > < td >< a href="">修改</ a >|< a href="">删除</ a ></ td > </ tr > < tr > < td >< input type="checkbox" name="ids" /></ td > < td >3</ td > < td >烟酒糖茶</ td > < td >烟酒糖茶</ td > < td >< a href="">修改</ a >|< a href="">删除</ a ></ td > </ tr > < tr > < td >< input type="checkbox" name="ids" /></ td > < td >4</ td > < td >鞋靴箱包</ td > < td >鞋靴箱包</ td > < td >< a href="">修改</ a >|< a href="">删除</ a ></ td > </ tr > < tr > < td >< input type="checkbox" name="ids" /></ td > < td >5</ td > < td >汽车用品</ td > < td >汽车用品</ td > < td >< a href="">修改</ a >|< a href="">删除</ a ></ td > </ tr > </ tbody > </ table > </ body > </ html > |
接着编写jQuery代码来完成对复选框的全选和全不选效果:
<script> // 复选框的全选和全不选 $(function() { // 获得上面的复选框 var $selectAll = $("#selectAll"); // alert($selectAll.prop("checked")); // 返回undefined未定义 $selectAll.click(function() { // alert($selectAll.prop("checked")); if ($selectAll.prop("checked") == true) { // 上面的复选框已被选中 $(":checkbox[name='ids']").prop("checked", true); } else { // 上面的复选框没被选中 $(":checkbox[name='ids']").prop("checked", false); } }); }); </script>
细心的读者应该能看出以上代码能简化为:
<script> // 复选框的全选和全不选 $(function() { $("#selectAll").click(function() { $(":checkbox[name='ids']").prop("checked", this.checked); // this指代的你当前选择的这个元素的JS对象 }); }); </script>
参考:
前端简单入门第十三讲 使用JavaScript完成复选框的全选和全不选的效果
别的代码参考:
$('input[name="selectall"]').click(function(){ //alert(this.checked); if($(this).is(':checked')){ $('input[name="stuCheckBox"]').each(function(){ //此处如果用attr,会出现第三次失效的情况 $(this).prop("checked",true); }); }else{ $('input[name="stuCheckBox"]').each(function(){ $(this).removeAttr("checked",false); }); //$(this).removeAttr("checked"); } }); <td><input type="checkbox" name="selectall"/></td>
最好不要用attr方法增加属性,否则会出现第三次点击不生效的情况,用prop方法较好
//没被选中的
var checkedList = new Array();
$("input[name='id']:not(:checked)").each(function() {
checkedList.push($(this).val());
});
//已选中的
var checkedList = new Array();
$("input[name='id']:checked").each(function() {
checkedList.push($(this).val());
});
<script type="text/javascript"> $(function(a) { $("#checkAllJQuery").click(function() { //alert(this.checked); if(this.checked==true) { $("input[name='chk2']").each(function() {$(this).prop("checked",true)})//法1 //$("input[name='chk2']").each(function() {$(this).attr("checked","checked")})//法2 }else{ $("input[name='chk2']").each(function() {$(this).prop("checked",false)})//法1 //$("input[name='chk2']").each(function() {$(this).removeAttr("checked")})//法2 } }) }) </script>
<input type="checkbox" id="checkAll" onclick="checkAll(this)">全选 <!--JavaScript方式实现全选 --> <script type="text/javascript"> function checkAll(a) { var arrayChecks = document.getElementsByName("chk"); for(var i=0;i<arrayChecks.length;i++) { arrayChecks[i].checked = a.checked; } } </script>
自己实际用的代码:
$("#checkAll").bind("click",function () { $('input[name="checkTeacher"]').each(function () { $(this).prop("checked",$("#checkAll").is(":checked")); }) })
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)