版权声明:(๑╹◡╹)ノ""" https://blog.csdn.net/qq_41218152/article/details/82885575
jQuery对表格的应用
一、表格变色
<table>
<thead>
<tr><th>姓名</th><th>性别</th><th>暂住地</th></tr>
</thead>
<tbody>
<tr><td>张山</td><td>男</td><td>浙江宁波</td></tr>
<tr><td>李四</td><td>女</td><td>浙江杭州</td></tr>
<tr><td>王五</td><td>男</td><td>湖南长沙</td></tr>
<tr><td>赵六</td><td>男</td><td>浙江温州</td></tr>
<tr><td>Rain</td><td>男</td><td>浙江杭州</td></tr>
<tr><td>MAXMAN</td><td>女</td><td>浙江杭州</td></tr>
</tbody>
</table>
(一). 普通的隔行变色
background: #FFFFEE;
}
.even{
background: #FFF38F;
}
$().ready(function(){
$("tr:odd").addClass("odd");
$("tr:even").addClass("even");
/*1. $("tr:odd")和$("tr:even")选择器中索引是从0开始的,因此第1行是偶数*/
/*2. 上面的代码会将表头也算进去*/
});
/*需要排除表格头部<thead>中的<tr>,将选择符改成如下:*/
$(function(){
$("tbody>tr:odd").addClass("odd");
$("tbody>tr:even").addClass("even");
});
/*如果还需要将某一行变为高亮显示状态,那么可以使用contains选择器来实现*/
$("tr:contains('王五')").addClass("selected");
(二). 单选框控制表格行高亮
/*单击某一行后,此行被选中高亮显示,并且单选框被选中。实现此过程需要以下几个步骤:*/
/*1. 为表格添加单击事件*/
/*2. 给单击的当前行添加高亮样式,然后将它的兄弟行的高亮样式去掉,最后将当前行里的单选框设置为选中*/
$("tbody>tr").click(function(){
$(this)
.addClass("selected")
.siblings().removeClass("selected")
.end()
.find(":radio").attr("checked",true);
});
/*当前对象是$(this),当进行addClass("selected")操作时,对象并未发生变化,当执行siblings().removeClass("slected")操作时,对象已变成$(this).siblings(),因此后面的操作时针对这个对象的,如果需要重新返回$(this)对象,就可以使用end()方法,这样后面的*/
.find(":radio").attr("checked",true);
/*操作就是*/
$(this) .find(":radio").attr("checked",true);
/*而不是*/
$(this).siblings() .find(":radio").attr("checked",true);
/*另外,初始化表格的时候,如果默认已经有单选框被选中,那么也需要处理*/
$("table :radio:checked").parent().parent().addClass("selected");
$("table :radio:checked").parent().parent().addClass("selected");
/*是通过parent()方法逐步向父节点获取相应元素的,也可以使用parents()方法直接获取*/
$("table :radio:checked").parents("tr").addClass("selected");
/*此外,如果通过has选择器也可以进一步简化,表示含有选中的单选框的<tr>行将被高亮显示*/
$("tbody>tr:has(:checked)").addClass("selected");
(三). 复选框控制表格行高亮
/*1. 复选框控制表格与单选框不同,复选框能选择多行变色,并没有限制被选择的个数*/
/*2. 当单击某行时,如=如果已经高亮了,则移除高亮样式并去掉当前行复选框的选中状态;如果还没有高亮,则添加高亮样式并将当前行的复选框选中*/
$("tbody>tr").click(function(){
if($(this).hasClass("selected")){
$(this)
.removeClass("selected")
.find(":checkbox").attr("checked",false);
}else{
$(this)
.addClass("selected")
.find(":checkbox").attr("checked",true);
}
});
$("tbody>tr").click(function(){
//判断当前是否选中
var hasSelected=$(this).hasClass("selected");
//如果选中,则移除selected类,否则就加上selected类
$(this)[hasSelected?"removeClass":"addClass"]("selected")
//查找内部的checkbox,设置对应的属性
.find(":checkbox").attr("checked",!hasSelected);
})
二、表格展开和关闭
<table>
<thead>
<tr><th>姓名</th><th>性别</th><th>暂住地</th></tr>
</thead>
<tbody>
<tr class="parent" id="row_01"><td colspan="3">前台设计组</td></tr>
<tr class="child_row_01"><td>张山</td><td>男</td><td>浙江宁波</td></tr>
<tr class="child_row_01"><td>李四</td><td>女</td><td>浙江杭州</td></tr>
<tr class="parent" id="row_02"><td colspan="3">前台开发组</td></tr>
<tr class="child_row_02"><td>王五</td><td>男</td><td>湖南长沙</td></tr>
<tr class="child_row_02"><td>赵六</td><td>男</td><td>浙江温州</td></tr>
<tr class="parent" id="row_03"><td colspan="3">后台开发组</td></tr>
<tr class="child_row_03"><td>Rain</td><td>男</td><td>浙江杭州</td></tr>
<tr class="child_row_03"><td>MAXMAN</td><td>女</td><td>浙江杭州</td></tr>
</tbody>
</table>
$(function(){
$("tr.parent").click(function(){
$(this)
.toggleClass("selected")
.siblings(".child_"+this.id).toggle();
});
/*给分类行设置了class="parent"属性,同时也分别给它们设置了id值,而在它们下面的行,只设置了class属性,并且这个class的值是在id值的基础上通过加上"child_"来设置的*/
});
/*人员分类默认是展开的,如果当用户刚进入页面时,默认需要收缩起来,也是很简单的。只要触发click()事件即可*/
$(function(){
$("tr.parent").click(function(){
$(this)
.toggleClass("selected")
.siblings(".child_"+this.id).toggle();
}).click();
});
三、表格内容筛选
- 利用选择器再结合jQuery的filter()筛选方法,可以实现表格内容的过滤
$(function(){
/*1. 首先在表格上方添加一个文本框,用于根据用户输入的内容来筛选表格内容,然后为文本框绑定keyup事件*/
/*2. 需要在DOM加载完时,为表单绑定事件并且立即触发该事件即可。这样,当页面被刷新后,就会立即执行id为"filterName"的keyup事件*/
$("#filterName").keyup(function(){
$("table tbody tr").hide()
.filter(":contains('"+ ($(this).val()) +"')").show();
}).keyup();
});
源于整理《锋利的 jQuery》