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 相关文章推荐
我的Node.js学习之路(三)--node.js作用、回调、同步和异步代码 以及事件循环
Jul 06 Javascript
JavaScript获取Url里的参数
Dec 18 Javascript
jQuery向后台传入json格式数据的方法
Feb 13 Javascript
基于jQuery创建鼠标悬停效果的方法
Mar 07 Javascript
Javascript中的Callback方法浅析
Mar 15 Javascript
Bootstrap3制作图片轮播效果
May 12 Javascript
ExtJS 4.2 Grid组件单元格合并的方法
Oct 12 Javascript
javascript表达式和运算符详解
Feb 07 Javascript
微信小程序 连续旋转动画(this.animation.rotate)详解
Apr 07 Javascript
纯JS实现简单的日历
Jun 26 Javascript
三分钟学会用ES7中的Async/Await进行异步编程
Jun 14 Javascript
JS闭包原理与应用经典示例
Dec 20 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
第1次亲密接触PHP5(1)
2006/10/09 PHP
php常用字符函数实例小结
2016/12/29 PHP
JQuery 选择器 xpath 语法应用
2010/05/13 Javascript
js数组的操作详解
2013/03/27 Javascript
js实现瀑布流的一种简单方法实例分享
2013/11/04 Javascript
javascript编写实用的省市选择器
2015/02/12 Javascript
JS组件Bootstrap Table布局详解
2016/05/27 Javascript
js原生实现FastClick事件的实例
2016/11/20 Javascript
Bootstrap导航条可点击和鼠标悬停显示下拉菜单
2016/11/25 Javascript
JavaScript实现定时页面跳转功能示例
2017/02/14 Javascript
浅谈regExp的test方法取得的值变化的原因及处理方法
2017/03/01 Javascript
JavaScript实现简单的星星评分效果
2017/05/18 Javascript
AngularJS实现自定义指令及指令配置项的方法
2017/11/20 Javascript
JS画布动态实现黑客帝国背景效果
2020/11/08 Javascript
如何在vue中使用HTML 5 拖放API
2021/01/14 Vue.js
Python获取运行目录与当前脚本目录的方法
2015/06/01 Python
深入理解Python变量与常量
2016/06/02 Python
关于python pyqt5安装失败问题的解决方法
2017/08/08 Python
基于Django用户认证系统详解
2018/02/21 Python
python判断一个数是否能被另一个整数整除的实例
2018/12/12 Python
Python数据类型之Dict字典实例详解
2019/05/07 Python
python3 批量获取对应端口服务的实例
2019/07/25 Python
如何基于Python + requests实现发送HTTP请求
2020/01/13 Python
适合Python初学者的一些编程技巧
2020/02/12 Python
在keras中实现查看其训练loss值
2020/06/16 Python
pytorch 把图片数据转化成tensor的操作
2021/03/04 Python
Luxplus瑞典:香水和美容护理折扣
2018/01/28 全球购物
英国演唱会订票网站:Ticket Selection
2018/03/27 全球购物
为什么需要版本控制?
2013/08/08 面试题
给老婆大人的检讨书
2014/02/24 职场文书
党性教育心得体会
2014/09/03 职场文书
毕业生学校组织意见
2015/06/04 职场文书
《失物招领》教学反思
2016/02/20 职场文书
导游词之西安骊山
2019/12/03 职场文书
js 数组 fill() 填充方法
2021/11/02 Javascript
Java界面编程实现界面跳转
2022/06/16 Java/Android