zl程序教程

您现在的位置是:首页 >  前端

当前栏目

jQuery+Ajax实现表格数据不同列标题排序(为表格注入活力)

jQuery注入AJAX排序数据 实现 不同 表格
2023-06-13 09:14:51 时间
表格大家都十分熟悉,如今的CSS也使得表格的布局越来越光彩耀人。但是,无论如何,都掩饰不了那些包装下的死板。

那么如何让那些死板的数据更具有可读性、可用性,能够让我们那些数据在“动”呢?

下面我们使用jquery+ajax来为表格注入些活力。主要实现的目的就是:将表格的列标题转化为按钮,点击不同的列标题,便按相应的列对数据进行排序。比如学生信息表,我点击“生日”列,这张表便按生日排序将结果呈现在我们面前。使用ajax来调用本页也避免了刷新页面所带来的折磨。
下面我给出最基本的jsp页面
 
详细代码如下
复制代码代码如下:

<%@pagelanguage="java"import="java.util.*"pageEncoding="ISO-8859-1"%>
<%
Stringpath=request.getContextPath();
StringbasePath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
<html>
<head>
<basehref="<%=basePath%>">
<title>MyJSP"sorttable.jsp"startingpage</title>
<metahttp-equiv="pragma"content="no-cache">
<metahttp-equiv="cache-control"content="no-cache">
<metahttp-equiv="expires"content="0">
<metahttp-equiv="keywords"content="keyword1,keyword2,keyword3">
<metahttp-equiv="description"content="Thisismypage">
<!--
<linkrel="stylesheet"type="text/css"href="styles.css">
-->

<scripttype="text/javascript"src="js/jquery-1.4.4.js"></script>
</head>
<body>
<tableclass="sorttable"style="background-color:gray;color:white;">
<thead>
<tr>
<th></th>
<thclass="sort-alpha">Title</th>
<th>Author</th>
<th>PublishDate</th>
<th>Price</th>
</tr>
</thead>
<tbody>
<tr>
<td><imgsrc="<%=path%>/images/javascript.jpg"width="40"height="50"alt="JavaScript"/></td>
<td>JavaScript</td>
<td>DouglasCrockford</td>
<td>May2008</td>
<td>$31.02</td>
</tr>
<tr>
<td><imgsrc="<%=path%>/images/Ajax.jpg"width="40"height="50"alt="AJAXandPHP:BuildingResponsiveWebApplications"/></td>
<td>AJAXandPHP:BuildingResponsiveWebApplications</td>
<td>CristianDarie,MihakBucica</td>
<td>Mar2006</td>
<td>$31.02</td>
</tr>
<tr>
<td><imgsrc="<%=path%>/images/Learning.jpg"width="40"height="50"alt="LearningMambo"/></td>
<td>LearningMambo</td>
<td>DouglasPaterson</td>
<td>Mar2006</td>
<td>$31.02</td>
</tr>
<tr>
<td><imgsrc="<%=path%>/images/Think.jpg"width="40"height="50"alt="Thinkinginjava"/></td>
<td>Thinkinginjava</td>
<td>BruceEckel</td>
<td>Feb2006</td>
<td>$33.02</td>
</tr>
<tr>
<td><imgsrc="<%=path%>/images/jQuery.jpg"width="40"height="50"alt="jQueryinAction,SecondEdition"/></td>
<td>jQueryinAction,SecondEdition</td>
<td>BearBibeault/YehudaKatz
</td>
<td>Apr2010</td>
<td>$35.02</td>
</tr>
</tbody>
</table>
</body>
</html>

第一步:为表格添加奇偶行交替背景
 
复制代码代码如下:

<styletype="text/css">
.even{
background-color:#E8A824;
}
.odd{
background-color:#74411B;
}
</style>

第二步:按字母排序
实现基于表格的Title列进行排序
<thclass="sort-alpha">Title</th>
为Title定义了一个sort-alpha类
复制代码代码如下:
<scripttype="text/javascript"language="javascript">
$(document).ready(function(){
varalternateRowColors=function($table){
$("tbodytr:odd",$table).removeClass("even").addClass("odd");
$("tbodytr: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(){
varrows=$table.find("tbody>tr").get();
rows.sort(function(a,b){
varkeyA=$(a).children("td").eq(column).text().toUpperCase();
varkeyB=$(b).children("td").eq(column).text().toUpperCase();
if(keyA<keyB)return-1;
if(keyA>keyB)return1;
return0;
});
$.each(rows,function(index,row){
$table.children("tbody").append(row);
});
alternateRowColors($table);
});
}
});
});
});
</script>

最后
当你点击Title时
最终效果:
 
其他类型的排序如下: