Tab页界面,用jQuery及Ajax技术实现


Posted in Javascript onSeptember 21, 2009

到了B/S开发时代,网页前端布局也把Tab页的布局形式吸收了过来。特别是和Ajax技术结合起来,可以更充分发挥Tab页的良好表现力和数据缓存的优势,是一种良好的网页布局形式。
网上的Tab页代码很多,实现也大同小异 ,但代码都显得凌乱,若要真的用的话,必须费劲的吃透它,才能进行二次定制开发,为我所用。实际上实现这个Tab页界面非常简单,仅仅是通过Ajax技术偷偷的获取信息,然后在一块区域轮流显示而已(通过显示和隐藏层,或复用一个层,轮流向里边填充Html数据)。
自己的开发的代码自己最清楚,用起来也应该最顺手,要扩展的话脑子也不犯晕。代码如下,还在不断修改中。

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd“> 
<html xmlns=”http://www.w3.org/1999/xhtml“> 
<head> 
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ /> 
<title>我的Tabs选项卡(Ajax版本)</title> 
<style type=”text/css”> 
body {font-size:12px; } 
#tab0,#tab1,#tab2 {background:url(images/gray.png); cursor:hand;} 
</style> 
<script type=”text/javascript” src=”jquery/jquery.js”></script> 
<script type=”text/javascript” src=”class.js”></script> 
<script type=”text/javascript” src=”my_ajax_tabs.js”></script> 
<script type=”text/javascript”> 
$(document).ready(function() 
{ 
//————————- 
//tabs 配置信息 
var tabs = [”#tab0″, “#tab1″, “#tab2″]; //tab 数组 id 
var datas = “#div_data”; //显示区对象的id号 
var event_type = “mouseover”; //触发事件(click/dblclick/mouseover/focus/…) 
var default_tab = “#tab0″; 
//切换图片 
var tab_selected_bgimg = “images/green.png”; 
var tab_unselected_bgimg = “images/gray.png”; 
//切换文本颜色 
var tab_selected_txtcolor = “#ff6600″; 
var tab_unselected_txtcolor = “#666666″; 
// 
urls = [ 
“my_ajax_server.php?app=tab0″, 
“my_ajax_server.php?app=tab1″, 
“my_ajax_server.php?app=tab2″, 
] 
//**Begin:固定代码********************************* 
for (var i=0; i<tabs.length; i++) 
{ 
$(tabs[i]).bind(event_type, handler); 
} 
$(default_tab).trigger(event_type); 
// 
function handler() 
{ 
//初始化缓存数组 
var localdatas = new Array(); //缓存浏览器本次数据 
for (var i=0; i<tabs.length; i++) 
{ 
localdatas[i]=”; 
} 
//重置所有tabs 
for (var i=0; i<tabs.length; i++) 
{ 
$(tabs[i]).css(”background-image”, “url(”+ tab_unselected_bgimg +”)”); 
$(tabs[i]).css(”color”, tab_unselected_txtcolor); 
} 
var curr_index; 
for(var i=0;i<tabs.length;i++) 
{ 
if($(tabs[i]).attr(”id”)==$(this).attr(”id”)) 
{ 
curr_index = parseInt(i); 
} 
} 
// 
$(this).css(”background-image”, “url(”+ tab_selected_bgimg +”)”); 
$(this).css(”color”, tab_selected_txtcolor); 
if(localdatas[curr_index]==”) 
{ 
//ajax获取数据(默认method=get) 
$.ajax 
({ 
url: urls[curr_index], //后台处理程序 
cache: false, 
timeout: 20000, 
error:function() 
{ 
alert(”error while submitting”); 
}, 
success:function(data) 
{ 
localdatas[curr_index] = data; //缓存浏览器本次数据 
$(datas).html(data); 
} 
}); 
} 
else 
{ //显示缓存数据 
$(datas).html(datas[curr_index]); 
} 
} 
//**End:固定代码********************************* 
//—————? 
}); 
</script> 
</head> 
<body> 
<table border=”0″ width=”500″ height=”25″ border=”0″ align=”center” cellpadding=”0″ cellspacing=”0″> 
<tr> 
<td width=”97″ id=”tab0″>tab0</td> 
<td width=”30″></td> 
<td width=”97″ id=”tab1″>tab1</td> 
<td width=”30″></td> 
<td width=”97″ id=”tab2″>tab2</td> 
<td width=”149″></td> 
</tr> 
</table> 
<table border=”1″ width=”500″ height=”60″ border=”0″ align=”center” cellpadding=”0″ cellspacing=”0″> 
<tr> 
<td> 
<div id=”div_data”></div> 
</td> 
</tr> 
</table> 
</body> 
</html>

my_ajax_server.php文件:
<?php 
/******************************************* 
* File: my_ajax_server.php 
********************************************/ 
error_reporting(7); 
set_magic_quotes_runtime(0); 
$app = $_GET['app']; 
switch ($app) 
{ 
case “tab0″: // 
?> 
from TAB0 
<?php 
break; 
case “tab1″: // 
?> 
from TAB1 
<?php 
break; 
case “tab2″: // 
?> 
from TAB2 
<?php 
break; 
default: 
echo ‘my_ajax_server.php error.'; 
break; 
} 
?>

张庆(网眼) 2009-9-18
看完这篇可以参考下一篇文章 用jQuery技术实现Tab页界面之二
本文来自: 三水点靠木(3water.com) 详细出处参考:https://3water.com/article/20091.htm
Javascript 相关文章推荐
jquery tools之tabs 选项卡/页签
Jul 25 Javascript
jQuery对象与DOM对象之间的转换方法
Apr 15 Javascript
JavaScript 异步方法队列链实现代码分析
Jun 05 Javascript
JavaScript对象、属性、事件手册集合方便查询
Jul 04 Javascript
js实现的map方法示例代码
Jan 13 Javascript
一个通过script自定义属性传递配置参数的方法
Sep 15 Javascript
Bootstrap4一次重大更新 几乎涉及每行代码
May 16 Javascript
vue 实现的树形菜的实例代码
Mar 19 Javascript
Vue高版本中一些新特性的使用详解
Sep 25 Javascript
解决angular双向绑定无效果,ng-model不能正常显示的问题
Oct 02 Javascript
简单谈谈javascript高级特性
Sep 04 Javascript
如何通过Proxy实现JSBridge模块化封装
Oct 22 Javascript
一个js写的日历(代码部分网摘)
Sep 20 #Javascript
下载站控制介绍字数显示的脚本 显示全部 隐藏介绍等功能
Sep 19 #Javascript
js表格分页实现代码
Sep 18 #Javascript
ext 同步和异步示例代码
Sep 18 #Javascript
JQuery的ajax基础上的超强GridView展示
Sep 18 #Javascript
jQuery 事件队列调整方法
Sep 18 #Javascript
javascript 面向对象编程  function是方法(函数)
Sep 17 #Javascript
You might like
PHP中的串行化变量和序列化对象
2006/09/05 PHP
让你的CSS像Jquery一样做筛选的实现方法
2011/07/10 Javascript
js保留两位小数使用toFixed实现
2013/07/29 Javascript
ExtJS的拖拽效果示例
2013/12/09 Javascript
jquery实现的鼠标拖动排序Li或Table
2014/05/04 Javascript
node.js中的fs.truncateSync方法使用说明
2014/12/15 Javascript
jQuery使用CSS()方法给指定元素同时设置多个样式
2015/03/26 Javascript
JS获取中文拼音首字母并通过拼音首字母快速查找页面内对应中文内容的方法【附demo源码】
2016/08/19 Javascript
快速掌握jQuery插件开发
2017/01/19 Javascript
详解如何在vue项目中使用lodop打印插件
2018/09/27 Javascript
Vue起步(无cli)的啊教程详解
2019/04/11 Javascript
编写Python的web框架中的Model的教程
2015/04/29 Python
深入解析Python中的线程同步方法
2016/06/14 Python
Python Pandas找到缺失值的位置方法
2018/04/12 Python
详解django自定义中间件处理
2018/11/21 Python
Python Collatz序列实现过程解析
2019/10/12 Python
Python列表嵌套常见坑点及解决方案
2020/09/30 Python
numpy实现RNN原理实现
2021/03/02 Python
CSS3中的opacity属性使用教程
2015/08/19 HTML / CSS
html5的新增的标签和废除的标签简要概述
2013/02/20 HTML / CSS
html5拍照功能实现代码(htm5上传文件)
2013/12/11 HTML / CSS
Bibloo匈牙利:女装、男装、童装及鞋子和配饰
2019/04/14 全球购物
惠普香港官方商店:HP香港
2019/04/30 全球购物
美国Jeep配件购物网站:Morris 4×4 Center
2019/05/01 全球购物
得到Class的三个过程是什么
2012/08/10 面试题
资深地理教师自我评价
2013/09/21 职场文书
优秀党员主要事迹
2014/01/19 职场文书
2014年单位植树节活动方案
2014/03/23 职场文书
2014应届本科生自我评价
2014/09/13 职场文书
计划生育工作汇报
2014/10/28 职场文书
重阳节座谈会主持词
2015/07/03 职场文书
植树节新闻稿
2015/07/17 职场文书
初三英语教学反思
2016/02/15 职场文书
pytorch实现线性回归以及多元回归
2021/04/11 Python
MySQL 使用索引扫描进行排序
2021/06/20 MySQL
mysql数据库隔离级别详解
2022/06/16 MySQL