jQuery:在Web页面实现筛选功能功能

效果

在这里插入图片描述
在这里插入图片描述

完整代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>

    <!--jQuery-->
    <script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>

    <style>
        table {
            border:0;
        }
        p {
            font:normal 12px/17px Arial;
        }
        td {
            font:normal 12px/17px Arial;
            padding:2px;
            width:100px;
        }
        th {
            font:bold 12px/17px Arial;
            text-align:left;
            padding:4px;
            border-bottom:1px solid #333;
            width:100px;
        }
        .even {
            background:#FFF38F;
        }
        /* 偶数行样式*/
        .odd {
            background:#FFFFEE;
        }
        /* 奇数行样式*/
        .selected {
            background:#FF6500;
            color:#fff;
        }
    </style>
</head>
<body>
    <p> 
        <br> 筛选: 
        <input id="filterName" name="filterName"> 
        <span class="search">搜索</span> 
        <br> 
    </p>

    <table>
        <thead>
        <tr><th>姓名</th><th>性别</th><th>暂住地</th></tr>
        </thead>
        <tbody>
        <tr><td>SYJ</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>张三</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>冬冬</td><td></td><td>东北辽宁省</td></tr>
        </tbody>
    </table>
    
    <!--排序函数-->
    <script type="text/javascript">
        $(function() {
            $('.search').on('click', function() {
                // console.log($('#filterName').val());
                $('table tbody tr').hide()
                    .filter(":contains('" + ($('#filterName').val()) + "')")
                    .show();
            })
        })
    </script>
</body>
</html>

代码详解

  • html搜索框部分
<p> 
    <br> 筛选: 
    <input id="filterName" name="filterName"> 
    <span class="search">搜索</span> 
    <br> 
</p>
  • js部分
<script type="text/javascript">
    $(function() {
        $('.search').on('click', function() {
            // console.log($('#filterName').val());
            $('table tbody tr').hide()
                .filter(":contains('" + ($('#filterName').val()) + "')")
                .show();
        })
    })
</script>

jQuery on() 方法

on() 方法在被选元素及子元素上添加一个或多个事件处理程序。

自 jQuery 版本 1.7 起,on() 方法是 bind()、live() 和 delegate() 方法的新的替代品。
该方法给 API 带来很多便利,我们推荐使用该方法,它简化了 jQuery 代码库。

注意:使用 on() 方法添加的事件处理程序适用于当前及未来的元素(比如由脚本创建的新元素)。

提示:如需移除事件处理程序,请使用 off() 方法。
提示:如需添加只运行一次的事件然后移除,请使用 one() 方法。
语法
$(selector).on(event,childSelector,data,function)

参数
event	必需。规定要从被选元素移除的一个或多个事件或命名空间。
             由空格分隔多个事件值,也可以是数组。必须是有效的事件。
childSelector	可选。规定只能添加到指定的子元素上的事件处理程序
				(且不是选择器本身,比如已废弃的 delegate() 方法)。
data	可选。规定传递到函数的额外数据。
function	可选。规定当事件发生时运行的函数。
Example:

$(document).ready(function(){
  $("p").on("click",function(){
    alert("段落被点击了。");
  });
});

jQuery 效果 - hide() 方法

语法:
$(selector).hide(speed,callback)


参数:
speed	可选。规定元素从可见到隐藏的速度。默认为 "0"。
		可能的值:
		毫秒 (比如 1500)
		"slow"
		"normal"
		"fast"
		在设置速度的情况下,元素从可见到隐藏的过程中,会逐渐地改变其高度、宽度、外边距、内边距和透明度。
callback	可选。hide 函数执行完之后,要执行的函数。除非设置了 speed 参数,否则不能设置该参数。


Example:
$(".btn1").click(function(){
  $("p").hide();
});

JavaScript Array filter() 方法

filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。
注意: filter() 不会对空数组进行检测。
注意: filter() 不会改变原始数组。

语法
array.filter(function(currentValue,index,arr), thisValue)

参数说明
function(currentValue, index,arr)	必须。函数,数组中的每个元素都会执行这个函数
				函数参数:
				currentValue	必须。当前元素的值
				index	可选。当前元素的索引值
				arr	可选。当前元素属于的数组对象
thisValue	可选。对象作为该执行回调时使用,传递给函数,用作 "this" 的值。
				如果省略了 thisValue ,"this" 的值为 "undefined"
Example

var ages = [32, 33, 16, 40];

function checkAdult(age) {
    return age >= 18;
}

function myFunction() {
    document.getElementById("demo").innerHTML = ages.filter(checkAdult);
}

jQuery 效果 show() 方法

show() 方法显示隐藏的被选元素。

注意:show() 适用于通过 jQuery 方法和 CSS 中 display:none 隐藏的元素
	(不适用于通过 visibility:hidden 隐藏的元素)。
提示:如需隐藏元素,请查看 hide() 方法。

语法
$(selector).show(speed,easing,callback)

参数	
speed	可选。规定显示效果的速度。
easing	可选。规定在动画的不同点上元素的速度。默认值为 "swing"。
		可能的值:
			"swing" - 在开头/结尾移动慢,在中间移动快
			"linear" - 匀速移动
callback	可选。show() 方法执行完之后,要执行的函数。

jQuery.contains()方法

https://www.runoob.com/jquery/misc-contains.html

$.contains( container, contained )

参数
container	Element类型 指定可能包含其他元素的祖辈容器元素。
contained	Element类型 指定可能被其他元素包含的后代元素。

另一种写法

$(function() { 
$("#Text1").keyup(function() { 
var filterText = $(this).val(); 
    $("#<%=GridView1.ClientID %> tr").not(":first")
    .hide()
    .filter(":contains('" + filterText + "')")
    .show();; 
}).keyup(); 
})

JQuery的选择器:

1:$("#<%=GridView1.ClientID %> tr")选择表格的所有行;/如果使用了别的控件产生的TABEL,可以使用$(“tr”)。

2:not(":first"):除去第一行表头行;

3:filter(":contains(’" + filterText + “’)”):从上面所选择的行里面筛选出行文本中包含filterText 的行显示出来;

4:最后加一句keyup()是为了在提交后重新触发keyup事件。

现在项目需求是匹配表格里某一列的内容,并显示此行,不匹配的不予显示。(类似查询功能)

再一种写法

$("tr").not(":first").each(function(){
if($(this).hide().find("td:eq(2)").text()indexOF(filterText)!=-1){
$(this).show();
}
else
$(this).hide();
});
  • 1
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值