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
Tab页界面,用jQuery及Ajax技术实现
声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。
Reply on: @reply_date@
@reply_contents@