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参数列表集合
Apr 06 Javascript
ajax处理php返回json数据的实例代码
Jan 24 Javascript
弹出最简单的模式化遮罩层的js代码
Dec 04 Javascript
jQuery aminate方法定位到页面具体位置
Dec 26 Javascript
BootStrap 图标icon符号图标glyphicons不正常显示的快速解决办法
Dec 08 Javascript
JavaScript用二分法查找数据的实例代码
Jun 17 Javascript
js实现鼠标移动到图片产生遮罩效果
Oct 21 Javascript
vue使用自定义icon图标的方法
May 14 Javascript
Vue.js 通过jQuery ajax获取数据实现更新后重新渲染页面的方法
Aug 09 jQuery
解决IE11 vue +webpack 项目中数据更新后页面没有刷新的问题
Sep 25 Javascript
基于Web Audio API实现音频可视化效果
Jun 12 Javascript
关于小程序优化的一些建议(小结)
Dec 10 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
Ajax实时验证用户名/邮箱等是否已经存在的代码打包
2011/12/01 PHP
zf框架的session会话周期及次数限制使用示例
2014/03/13 PHP
php解决约瑟夫环示例
2014/04/09 PHP
ThinkPHP页面跳转success与error方法概述
2014/06/25 PHP
PHP实现的登录页面信息提示功能示例
2017/07/24 PHP
PHP正则之正向预查与反向预查讲解与实例
2020/04/06 PHP
JTrackBar水平拖动效果
2007/07/15 Javascript
改变隐藏的input中value的值代码
2013/12/30 Javascript
JS实现屏蔽shift,Ctrl,alt等功能键的方法
2015/06/01 Javascript
详解JavaScript中Date.UTC()方法的使用
2015/06/12 Javascript
jQuery中 delegate使用的问题
2015/07/03 Javascript
JS拉起或下载app的实现代码
2017/02/22 Javascript
Bootstrap下拉菜单Dropdowns的实现代码
2017/03/17 Javascript
vue2.0多条件搜索组件使用详解
2020/03/26 Javascript
JavaScript基础之流程控制语句的用法
2017/08/31 Javascript
React实践之Tree组件的使用方法
2017/09/30 Javascript
layer实现弹出层自动调节位置
2019/09/05 Javascript
关于引入vue.js 文件的知识点总结
2020/01/28 Javascript
ES6函数和数组用法实例分析
2020/05/23 Javascript
[04:13]2018国际邀请赛典藏宝瓶Ⅱ饰品一览
2018/07/21 DOTA
编写Python脚本把sqlAlchemy对象转换成dict的教程
2015/05/29 Python
python后端接收前端回传的文件方法
2019/01/02 Python
python实现最大子序和(分治+动态规划)
2019/07/05 Python
django做form表单的数据验证过程详解
2019/07/26 Python
python 实现屏幕录制示例
2019/12/23 Python
简单了解Python变量作用域正确使用方法
2020/06/12 Python
cookies应对python反爬虫知识点详解
2020/11/25 Python
CSS3盒子模型详解
2013/04/24 HTML / CSS
美国知名奢侈美容品牌零售商:Cos Bar
2017/04/21 全球购物
iHerb中文官网:维生素、保健品和健康产品
2018/11/01 全球购物
Java的for语句中break, continue和return的区别
2013/12/19 面试题
《十六年前的回忆》教学反思
2014/02/14 职场文书
民主生活会对照检查材料
2014/09/22 职场文书
婚礼答谢词
2015/01/04 职场文书
教师节校长致辞
2015/07/31 职场文书
孙振耀退休感言
2015/08/01 职场文书