jQuery对表格的应用

版权声明:(๑╹◡╹)ノ""" 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();
    });

在这里插入图片描述

三、表格内容筛选

  1. 利用选择器再结合jQuery的filter()筛选方法,可以实现表格内容的过滤
	$(function(){
		/*1. 首先在表格上方添加一个文本框,用于根据用户输入的内容来筛选表格内容,然后为文本框绑定keyup事件*/
		/*2. 需要在DOM加载完时,为表单绑定事件并且立即触发该事件即可。这样,当页面被刷新后,就会立即执行id为"filterName"的keyup事件*/
        $("#filterName").keyup(function(){
            $("table tbody tr").hide()
                    .filter(":contains('"+ ($(this).val()) +"')").show();
        }).keyup();
    });

在这里插入图片描述

在这里插入图片描述
源于整理《锋利的 jQuery》

猜你喜欢

转载自blog.csdn.net/qq_41218152/article/details/82885575
今日推荐