使用select下拉菜单筛选table表格内容

使用select下拉菜单筛选table表格内容:
本章节介绍一下如何利用select下拉菜单对表单的内容进行筛选,如果数据量庞大,便于搜索使用的话,筛选效果还是非常有必要的,代码实例如下:

<!DOCTYPE html>
<html>
<head>
<meta charset=" utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>蚂蚁部落</title>
<style type="text/css">
table td{
  border:1px solid black;
}
</style>
<script type="text/javascript" src="mytest/jQuery/jquery-1.8.3.js"></script>
<script type="text/javascript">
$(document).ready(function(){
  $("#example>thead th").each(function(i) {
    $("<select/>").attr("data-index",i).html($("<option/>")).change(function(){
      $("#example > tbody > tr").show().filter(function(){
        var comb=[],children=$(this).children();
        children.each(function(i){
          var value=$("select[data-index=‘" + i + "‘]").val();
          if (value == $(this).text() || value == "") comb.push(1);
        });
        return comb.length != children.length;
      }).hide();
    }).appendTo("body");
  });
  $("#example > tbody tr").each(function() {
    $(this).children().each(function(i) {
      var that=$(this);
      var select=$("select[data-index=‘" + i + "‘]");
      if(!select.children().filter(function(){
        return $(this).text() == that.text();
      }).length){
        select.append($("<option />").text($(this).text()));
      }
    });
  });
})
</script>
</head>
<body>
<table id="example">
  <thead>
    <tr>
      <th>Name</th>
      <th>Surname</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Michael</td>
      <td>Jordan</td>
    </tr>
    <tr>
      <td>Michael</td>
      <td>Jackson</td>
    </tr>
    <tr>
      <td>Bruno</td>
      <td>Mars</td>
    </tr>
  </tbody>
</table>
</div>
</body>
</html>

以上代码实现了简单的表格筛选功能,下面就介绍一下它的实现过程。
一.代码注释:
1.$(document).ready(function(){}),当文档结构完全加载完毕再去执行函数中的代码。
2.$("#example>thead th").each(function(i){}),遍历表格中的th元素。
3.$("<select/>").attr("data-index",i).html($("<option/>")).change(function(){}),为select下拉菜单注册change事件处理函数。$("<select/>")创建一个select下拉菜单,attr("data-index",i),为创建的select下拉菜单添加和设置data-index属性和属性值,html($("<option/>"))添加一个空的option项。这里其实创建了两个select下拉菜单,并注册事件处理函数。
4.$("#example > tbody > tr").show().filter(function(){}).hide(),过滤表格的行。show()首先显示所有的行,然后再通过filter()函数进行过滤,左后将过滤后行使用hide()函数隐藏。
5.var comb=[],children=$(this).children(),声明一个空数组,只是用来作用为一个标记而已,下面会有介绍,children=$(this).children()用来获取当前行下所有的单元格。
6.children.each(function(i){}),遍历当前行的所有单元格,i是当前单元格的索引值。
7.var value=$("select[data-index=‘" + i + "‘]").val(),获取当前select下拉菜单的值,也就是选中的option项的value属性值。
8.if(value == $(this).text() || value == "") comb.push(1),判断当前select的值是否和当前单元格的值相等或者值是否为空,如果相等则将1追加到数组。
9.return comb.length != children.length,返回一个布尔值,如果数组中元素的数目和单元格的数目相同,那么就表示当前行完全满足下面两个select下拉菜单的筛选。
10.appendTo("body"),将select下拉菜单追加到body中。
11.$("#example > tbody tr").each(function(){}),遍历表格中tbody中的所有tr元素。
12.$(this).children().each(function(i){}),遍历当前行下的所有td单元格。
13.var that=$(this),将当前单元格的索引赋值给变量that。
14.var select=$("select[data-index=‘" + i + "‘]"),获取对应索引的select下拉菜单。
15.if(!select.children().filter(function(){return $(this).text() == that.text();}).length){select.append($("<option />").text($(this).text()));},判断select下拉菜单中option的文本内容是否和单元格的内容相同,如果没有相同的,就给select下拉菜单添加一个option项,文本内容就是当前单元格的内容。
二.相关阅读:
1.each()函数可以参阅jQuery的each()方法一章节。 
2.attr()函数可以参阅jQuery的attr()方法一章节。 
3.html()函数可以参阅jQuery的html()方法一章节。
4.change事件可以参阅jQuery的change事件一章节。 
5.show()函数可以参阅jQuery的show()方法一章节。
6.filter()函数可以参阅jQuery的filter()函数用法简单介绍一章节。 
7.children()函数可以参阅jQuery的children()方法一章节。 
8.val()函数可以参阅jQuery的val()方法一章节。 
9.push()函数javascript的Array对象的push()方法一章节。
10.append()函数可以参阅jQuery的append()方法一章节。

原文地址是:http://www.softwhy.com/forum.php?mod=viewthread&tid=13660

更多内容可以参阅:http://www.softwhy.com/jquery/

时间: 2024-10-29 10:46:45

使用select下拉菜单筛选table表格内容的相关文章

html 布局;css3+jq 下拉菜单;table分页动态添加行;html5本地存储;简单易用的html框架

简单好用的html框架,预览图见最后: 源码: 1.页面布局使用table: table 嵌套 +iframe 布局: 2.下拉菜单为jq+css3 动画; css input 无边框,select下拉菜单美化 1 input{appearance:none;background-color:transparent;border: solid 0px #000;} /*input 无边框*/ 2 input:disabled{background-color:#d2d2d2;border:0px

火狐浏览器下连接a下无法使用select下拉菜单

火狐浏览器下连接a下无法使用select下拉菜单:如果select下拉菜单包裹在链接a中,则无法实现选中效果,当然如此使用在实际应用中也是很少见的,不过下面还是做一下简单介绍,如何避免此种问题的出现,寄希望能够给需要者带来一定的帮助.代码实例如下: <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content=&

如何设置select下拉菜单option项显示的数目

如何设置select下拉菜单option项显示的数目: 本章节介绍一下如何设置select下拉菜单的可见的option项的数目,代码如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.51texiao.cn/" /> <title>蚂蚁

jquery如何删除select下拉菜单中所有的option项

jquery如何删除select下拉菜单中所有的option项:在实际应用中,有可能要求一次性删除所有的select下拉菜单的option选项,方法非常的简单.select下拉菜单: <select id="mayi"> <option value="1">蚂蚁部落一</option> <option value="2">蚂蚁部落二</option> </select> 删除

div模拟select下拉菜单效果

有些时候select下拉菜单直接用css调整样式,可能会有兼容性的问题,尤其是右侧的下拉三角,很难用css控制,那怎么办呢?可以采用div模拟select下拉菜单的效果.先直接上代码了: HTML的结构如下: <!doctype html> <html> <head> <meta charset="utf-8" /> <title>div模拟下拉菜单特效</title> <style type="t

美化select下拉菜单

默认的select下拉菜单不容易美化,很多UI是无法通过css更改的,所以要美化先更改结构,下面介绍的美化插件尽管代码各异,但大部分都将默认的下拉菜单转化成样式可控的元素,例如div.ul.span等,这样就可以用CSS尽情定制了. Chosen Chosen is a jQuery plugin that makes long, unwieldy select boxes much more user-friendly. WooCommerce中的国家选择器很美观,这个脚本实现的效果与之完全相

javascript模拟select下拉菜单

javascript模拟select下拉菜单: 由于自带的select下拉菜单确实是不够美观,并且美化的潜力也不够大,所以对外观要求比较高的网站,基本都要使用自定义的select下拉菜单,下面就提供了一个简单的例子供大家参考,代码实例如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="author" content="

web前端html实例-select下拉菜单美化代码

自带的select下拉菜单美观度实在不怎么样,并且不容易美化,当然我们可以模拟实现select下拉菜单,但是代码稍显复杂,不过也可以通过简单的CSS实现此效果,下面通过实例简单作一下介绍. 代码如下: <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.softwhy.

select下拉菜单反显不可修改,且submit可以提交数据

首先通过后台funcA()将下拉菜单反显不可修改的数据response到disable.jsp页面,disable.jsp: <script> var data1=${result.object.data1}; var data2=${result.object.data2}; var data3=${result.object.data3}; ......条件 function setDisable(){ show(data1,data2,data3); $("#.disable_