js和jq实现全选反选
在前端中用到全选反选的案例并不少,在这里呢我就实现这个功能给大家参考参考。
这里呢就先贴上我的html和css代码
<div class="wrap">
<table>
<thead>
<tr>
<th>
<input type="checkbox" id="theadInp" />
</th>
<th>快递</th>
<th>收件人</th>
<th>电话</th>
</tr>
</thead>
<tbody id="tbody">
<tr>
<td>
<input type="checkbox" />
</td>
<td>顺丰</td>
<td>张大大</td>
<td>186*****897
</tr>
<tr>
<td>
<input type="checkbox" />
</td>
<td>韵达</td>
<td>张全蛋</td>
<td>186*****897
</tr>
<tr>
<td>
<input type="checkbox" />
</td>
<td>圆通</td>
<td>韩非</td>
<td>186*****897
</tr>
<tr>
<td>
<input type="checkbox" />
</td>
<td>中国邮政</td>
<td>卫庄</td>
<td>186*****897
</tr>
</tbody>
</table>
</div>
这是html部分的,下面呢,我附上css部分的代码:
* {
padding:;
margin:;
}
.wrap {
width: 300px;
margin: 100px auto 0;
}
table {
border-collapse: collapse;
border-spacing:;
border: 1px solid #c0c0c0;
width: 300px;
}
th,
td {
border: 1px solid #d0d0d0;
color: #404060;
padding: 10px;
}
th {
background-color:rgb(51, 199, 18);
font: bold 16px "微软雅黑";
color: #fff;
}
td {
font: 14px "微软雅黑";
}
tbody tr {
background-color: #f0f0f0;
}
tbody tr:hover {
cursor: pointer;
background-color: #fafafa;
}
展示出来的布局是这样的:

好了,下面我们就开始讲重点把,做之前的呢,一定要理清思路,只有理清思路的才能好下手做啊
我们要通过点击第一个input标签来改变所有input标签的选择状态,
1.首先要获取到控制总选择状态的input标签,我们命名为inputAll
2.然后把每个input标签存到一个数组中去,我们命名为icheck
3.点击inputAll来改变状态,并且让icheck里面的input能跟着他的状态来变化
代码如下:
window.onload = function() {
//先获得控制全选反选的input标签
var inputAll = document.getElementById("theadInp");
//获得tbody
var tbody = document.getElementById("tbody");
//获得天tbody里面的子元素
var icheck = tbody.getElementsByTagName("input");
console.log(icheck);
//给控制全选反选的input标签绑定事件
inputAll.onclick = function() {
//遍历tbody里面的input标签,把inputAll的状态赋值给icheck
for(var i = 0; i < icheck.length; i++) {
icheck[i].checked = this.checked;
}
}
上面都有写注释,大家肯定都能看的懂的,也没难点,就不需要解释了。
看下面:

以为这样就结束了事了吗?然而并没有。里面还是有个小问题的,就是当下面的input有一个以上没选中的时候,那么inputAll的状态也必须要跟着变化,总不能只让人家听他一个人的话吧,这就太不像话了。
for(var i = 0; i < icheck.length; i++) {
//给每个子元素都绑定事件
icheck[i].onclick = function() {
//点击的时候在遍历icheck,看看是否有没选中的
for(var j = 0; j < icheck.length; j++) {
//定义一个标志来记录
var flag = true;
if(icheck[j].checked == false) {
flag = false;
}
}
inputAll.checked=flag;
}
}
jq实现方法:
是不是觉得js实现起来特别的繁琐,没关系,我们有更加简单的实现办法,那就jq来实现
$(function() {
//实现全选反选
$("#theadInp").on('click', function() {
$("tbody input:checkbox").prop("checked", $(this).prop('checked'));
})
$("tbody input:checkbox").on('click', function() {
//当选中的长度等于checkbox的长度的时候,就让控制全选反选的checkbox设置为选中,否则就为未选中
if($("tbody input:checkbox").length === $("tbody input:checked").length) {
$("#theadInp").prop("checked", true);
} else {
$("#theadInp").prop("checked", false);
}
})
})
看,jq方法是不是简单的太多了,所以呢,能用jq就别人js实现了
js和jq实现全选反选的更多相关文章
- jq实现全选、全不选、反选
基本思路: 1全选:点击全选按钮的时候,将input的属性checked设置为true; 2全不选:点击全不选按钮的时候,将input的属性checked设置为false; 3反选:点击反选按钮的时候 ...
- 基于JQ的多选/全选/反选及获取选中的值
<!-- author:青芒 --> <!DOCTYPE html> <html lang="en"> <head> <met ...
- jquery、js操作checkbox全选反选
全选反选checkbox在实际应用中比较常见,本文有个不错的示例,大家可以参考下 操作checkbox,全选反选//全选 function checkAll() { $('input[name=&qu ...
- jquery、js全选反选checkbox
操作checkbox,全选反选 //全选 function checkAll() { $('input[name="TheID"]').attr("checked&quo ...
- JS全选反选功能
总选框:<input type="checkbox" class="all" name="all"> 子选框: <inpu ...
- js全选 反选
// 全选 反选 allChoose: function (o) { var obj = $.extend(true, { id: "#id", name: "name& ...
- jQuery之标签操作和返回顶部、登录验证、全选反选、克隆示例
一.样式操作 1.JQ中的样式类 somenode.addClass();// 添加指定的CSS类名. somenode.removeClass();// 移除指定的CSS类名. somenode.h ...
- jQuery全选/反选checkbox
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- python: jquery实现全选 反选 取消
引入这个jquery-1.12.4.js jquery实现全选 反选 取消 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitio ...
随机推荐
- 计算器软件实现系列(五)策略模式+asp.net
一 策略模式代码的编写 using System; using System.Collections.Generic; using System.Linq; using System.Web; /// ...
- iOS APP中第三方APP调用自己的APP,打开文件
根据需求需要在项目中要打开word.pdf.excel等文件,在info.plist文件中添加 <key>CFBundleDocumentTypes</key> <arr ...
- Maven pom 文件解释
1 - 什么是构建? 我们都知道,写完代码之后需要进行编译和运行,以笔者自身为例,使用 Eclipse 写完代码,需要进行编译,再生成 war 包,以便部署到 Tomcat. 在编写 Java 代码的 ...
- JVM(二)GC
GC简介 Java堆内存 在运行时,java的实例被存放在堆内存区域.当一个对象不在被引用,满足条件就会从堆内存移除并且内存空间被回收.堆内存由三个主要区域 1.新生代 Eden空间(任何实例 ...
- 安装FastDFS+Nginx
安装FastDFS FastDFS开发者的GitHub地址为:https://github.com/happyfish100 打开上述链接,我们点击fastdfs–>release,发现最新版的 ...
- BZOJ 1296 粉刷匠(分组背包套DP)
刚开始往网络流的方向想.建不出图... 因为每次只能对一行进行染色.每一行都是独立的. 对于每一行,因为格子只能染一次,所以可以发现这是一个多阶段决策问题,这个决策就是当前格子染0还是染1. 令dp[ ...
- CentOS ACL
ACL:访问控制列表(Access Control List). 一般来说权限是针对某一类用户设置的.例如:一个文件只有拥有者.组.其他用户三种设置方式,如果希望对某个指定的用户进行单独的权限控制,就 ...
- Oracle 以某字段分组,以某字段排序,取前几条
select * from (select row_number() over(partition by 以此字段为分组 order by 以此字段排序 desc rn from dual) whe ...
- CF#312 558e A Simple Task
~~~题面~~~ 题解: 观察到字母只有26个,因此考虑对这26个字母分别维护,每个线段树维护一个字母,如果一个线段树的某个叶节点有值,表示当前叶节点所在位置的字母是现在这个线段树代表的字母. 那么对 ...
- 51nod 1554:欧姆诺姆和项链——题解
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1554 题目: 有一天,欧姆诺姆发现了一串长度为n的宝石串,上面有五颜六色 ...