jQuery+Ajax实现表格数据不同列标题排序(为表格注入活力)
程序员文章站
2022-05-03 08:28:25
表格大家都十分熟悉,如今的css也使得表格的布局越来越光彩耀人。但是,无论如何,都掩饰不了那些包装下的死板。 那么如何让那些死板的数据 更具有可读性、可用性,能够让我们那些...
表格大家都十分熟悉,如今的css也使得表格的布局越来越光彩耀人。但是,无论如何,都掩饰不了那些包装下的死板。
那么如何让那些死板的数据 更具有可读性、可用性,能够让我们那些数据在“动”呢?
下面我们使用jquery+ajax 来为表格注入些活力。主要实现的目的就是:将表格的列标题转化为按钮,点击不同的列标题,便按相应的列对数据进行排序。比如学生信息表,我点击“生日”列,这张表便按生日排序将结果呈现在我们面前。使用ajax来调用本页也避免了刷新页面所带来的折磨。
下面我给出最基本的jsp页面
详细代码如下
<%@ page language="java" import="java.util.*" pageencoding="iso-8859-1"%>
<%
string path = request.getcontextpath();
string basepath = request.getscheme()+"://"+request.getservername()+":"+request.getserverport()+path+"/";
%>
<!doctype html public "-//w3c//dtd html 4.01 transitional//en">
<html>
<head>
<base href="<%=basepath%>">
<title>my jsp 'sorttable.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="this is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<script type="text/javascript" src="js/jquery-1.4.4.js"></script>
</head>
<body>
<table class = "sorttable" style="background-color: gray;color: white;">
<thead>
<tr >
<th></th>
<th class="sort-alpha">title</th>
<th>author</th>
<th>publishdate</th>
<th>price</th>
</tr>
</thead>
<tbody>
<tr>
<td><img src="<%=path %>/images/javascript.jpg" width="40" height="50" alt="javascript" /></td>
<td>javascript</td>
<td> douglas crockford </td>
<td> may 2008</td>
<td>$31.02</td>
</tr>
<tr>
<td><img src="<%=path %>/images/ajax.jpg" width="40" height="50" alt="ajax and php:building responsive web applications" /></td>
<td>ajax and php:building responsive web applications</td>
<td>cristian darie,mihak bucica</td>
<td> mar 2006</td>
<td>$31.02</td>
</tr>
<tr>
<td><img src="<%=path %>/images/learning.jpg" width="40" height="50" alt="learning mambo" /></td>
<td>learning mambo</td>
<td>douglas paterson</td>
<td> mar 2006</td>
<td>$31.02</td>
</tr>
<tr>
<td><img src="<%=path %>/images/think.jpg" width="40" height="50" alt="thinking in java" /></td>
<td>thinking in java</td>
<td>bruce eckel </td>
<td> feb 2006</td>
<td>$33.02</td>
</tr>
<tr>
<td><img src="<%=path %>/images/jquery.jpg" width="40" height="50" alt="jquery in action, second edition" /></td>
<td>jquery in action, second edition</td>
<td>bear bibeault / yehuda katz
</td>
<td> apr 2010</td>
<td>$35.02</td>
</tr>
</tbody>
</table>
</body>
</html>
第一步:为表格添加奇偶行交替背景
<style type="text/css">
.even{
background-color: #e8a824;
}
.odd{
background-color:#74411b;
}
</style>
第二步:按字母排序
实现基于表格的title列进行排序
<thclass="sort-alpha">title</th>
为title定义了一个sort-alpha类
<script type="text/javascript" language="javascript">
$(document).ready(function(){
var alternaterowcolors = function($table){
$('tbody tr:odd',$table).removeclass('even').addclass('odd');
$('tbody tr:even',$table).removeclass('odd').addclass('even')
};
$('table.sorttable').each(function (){
var $table =$(this);
alternaterowcolors($table);
$('th',$table).each(function(column){
var $header = $(this);
if($header.is('.sort-alpha')){
$header.addclass('clickable').hover(function(){
$header.addclass('hover');
},function(){
$header.removeclass('hover');
}).click(function(){
var rows = $table.find('tbody>tr').get();
rows.sort(function(a,b){
var keya =$(a).children('td').eq(column).text().touppercase();
var keyb =$(b).children('td').eq(column).text().touppercase();
if(keya<keyb) return -1;
if(keya>keyb) return 1;
return 0;
});
$.each(rows,function(index,row){
$table.children('tbody').append(row);
});
alternaterowcolors($table);
});
}
});
});
});
</script>
最后
当你点击title时
最终效果:
其他类型的排序如下:
那么如何让那些死板的数据 更具有可读性、可用性,能够让我们那些数据在“动”呢?
下面我们使用jquery+ajax 来为表格注入些活力。主要实现的目的就是:将表格的列标题转化为按钮,点击不同的列标题,便按相应的列对数据进行排序。比如学生信息表,我点击“生日”列,这张表便按生日排序将结果呈现在我们面前。使用ajax来调用本页也避免了刷新页面所带来的折磨。
下面我给出最基本的jsp页面
详细代码如下
复制代码 代码如下:
<%@ page language="java" import="java.util.*" pageencoding="iso-8859-1"%>
<%
string path = request.getcontextpath();
string basepath = request.getscheme()+"://"+request.getservername()+":"+request.getserverport()+path+"/";
%>
<!doctype html public "-//w3c//dtd html 4.01 transitional//en">
<html>
<head>
<base href="<%=basepath%>">
<title>my jsp 'sorttable.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="this is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<script type="text/javascript" src="js/jquery-1.4.4.js"></script>
</head>
<body>
<table class = "sorttable" style="background-color: gray;color: white;">
<thead>
<tr >
<th></th>
<th class="sort-alpha">title</th>
<th>author</th>
<th>publishdate</th>
<th>price</th>
</tr>
</thead>
<tbody>
<tr>
<td><img src="<%=path %>/images/javascript.jpg" width="40" height="50" alt="javascript" /></td>
<td>javascript</td>
<td> douglas crockford </td>
<td> may 2008</td>
<td>$31.02</td>
</tr>
<tr>
<td><img src="<%=path %>/images/ajax.jpg" width="40" height="50" alt="ajax and php:building responsive web applications" /></td>
<td>ajax and php:building responsive web applications</td>
<td>cristian darie,mihak bucica</td>
<td> mar 2006</td>
<td>$31.02</td>
</tr>
<tr>
<td><img src="<%=path %>/images/learning.jpg" width="40" height="50" alt="learning mambo" /></td>
<td>learning mambo</td>
<td>douglas paterson</td>
<td> mar 2006</td>
<td>$31.02</td>
</tr>
<tr>
<td><img src="<%=path %>/images/think.jpg" width="40" height="50" alt="thinking in java" /></td>
<td>thinking in java</td>
<td>bruce eckel </td>
<td> feb 2006</td>
<td>$33.02</td>
</tr>
<tr>
<td><img src="<%=path %>/images/jquery.jpg" width="40" height="50" alt="jquery in action, second edition" /></td>
<td>jquery in action, second edition</td>
<td>bear bibeault / yehuda katz
</td>
<td> apr 2010</td>
<td>$35.02</td>
</tr>
</tbody>
</table>
</body>
</html>
第一步:为表格添加奇偶行交替背景
复制代码 代码如下:
<style type="text/css">
.even{
background-color: #e8a824;
}
.odd{
background-color:#74411b;
}
</style>
第二步:按字母排序
实现基于表格的title列进行排序
<thclass="sort-alpha">title</th>
为title定义了一个sort-alpha类
复制代码 代码如下:
<script type="text/javascript" language="javascript">
$(document).ready(function(){
var alternaterowcolors = function($table){
$('tbody tr:odd',$table).removeclass('even').addclass('odd');
$('tbody tr:even',$table).removeclass('odd').addclass('even')
};
$('table.sorttable').each(function (){
var $table =$(this);
alternaterowcolors($table);
$('th',$table).each(function(column){
var $header = $(this);
if($header.is('.sort-alpha')){
$header.addclass('clickable').hover(function(){
$header.addclass('hover');
},function(){
$header.removeclass('hover');
}).click(function(){
var rows = $table.find('tbody>tr').get();
rows.sort(function(a,b){
var keya =$(a).children('td').eq(column).text().touppercase();
var keyb =$(b).children('td').eq(column).text().touppercase();
if(keya<keyb) return -1;
if(keya>keyb) return 1;
return 0;
});
$.each(rows,function(index,row){
$table.children('tbody').append(row);
});
alternaterowcolors($table);
});
}
});
});
});
</script>
最后
当你点击title时
最终效果:
其他类型的排序如下: