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 相关文章推荐
javascript中的location用法简单介绍
Mar 07 Javascript
js 删除数组的几种方法小结
Feb 21 Javascript
JavaScript开发人员的10个关键习惯小结
Dec 05 Javascript
jQuery中:nth-child选择器用法实例
Dec 31 Javascript
JavaScript中5种调用函数的方法
Mar 12 Javascript
Backbone.js的Hello World程序实例
Jun 19 Javascript
深入理解jquery中extend的实现
Dec 22 Javascript
详解webpack 多入口配置
Jun 16 Javascript
基于JavaScript实现五子棋游戏
Aug 26 Javascript
微信小程序开发之左右分栏效果的实例代码
May 20 Javascript
JavaScript实现横版菜单栏
Mar 17 Javascript
微信小程序学习总结(四)事件与冒泡实例分析
Jun 04 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中GET变量的使用
2006/10/09 PHP
php中截取字符串支持utf-8
2007/01/18 PHP
MySQL数据库转移,access,sql server 转 MySQL 的图文教程
2007/09/02 PHP
PHP使用gmdate实现将一个UNIX 时间格式化成GMT文本的方法
2015/03/19 PHP
php官方微信接口大全(微信支付、微信红包、微信摇一摇、微信小店)
2015/12/21 PHP
PHP7 foreach() 函数修改
2021/03/09 PHP
使用JS取得焦点(focus)元素代码
2014/03/22 Javascript
利用JavaScript脚本实现滚屏效果的方法
2015/07/07 Javascript
jQuery实现下拉加载功能实例代码
2016/04/01 Javascript
nodejs的HTML分析利器node-jquery用法浅析
2016/11/08 NodeJs
javascript构造函数以及原型对象的理解
2017/01/13 Javascript
JavaScript运动框架 多物体任意值运动(三)
2017/05/17 Javascript
JS的函数调用栈stack size的计算方法
2018/06/24 Javascript
webpack手动配置React开发环境的步骤
2018/07/02 Javascript
介绍Python的Django框架中的QuerySets
2015/04/20 Python
python实现数组插入新元素的方法
2015/05/22 Python
用python结合jieba和wordcloud实现词云效果
2017/09/05 Python
python编程测试电脑开启最大线程数实例代码
2018/02/09 Python
python批量读取txt文件为DataFrame的方法
2018/04/03 Python
python自动查询12306余票并发送邮箱提醒脚本
2018/05/21 Python
详解windows python3.7安装numpy问题的解决方法
2018/08/13 Python
django之跨表查询及添加记录的示例代码
2018/10/16 Python
python爬取微信公众号文章的方法
2019/02/26 Python
Python3.8对可迭代解包的改进及用法详解
2019/10/15 Python
如何基于python生成list的所有的子集
2019/11/11 Python
python通过函数名调用函数的几种场景
2020/09/23 Python
使用CSS3的font-face字体嵌入样式的方法讲解
2016/05/13 HTML / CSS
英国最大的自有市场,比亚马逊便宜:Flubit
2019/03/19 全球购物
英国最大的宠物商店:Pets at Home
2019/04/17 全球购物
美国基督教约会网站:ChristianCafe.com
2020/02/04 全球购物
教师业务学习制度
2014/01/25 职场文书
员工拓展培训方案
2014/02/15 职场文书
离开雷锋的日子观后感
2015/06/09 职场文书
文艺部部长竞选稿
2015/11/21 职场文书
承诺书的内容有哪些,怎么写?
2019/06/21 职场文书
2019年房屋委托租赁合同范本(通用版)!
2019/07/17 职场文书