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

  到了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页界面之二

  本文来自: 管理资源吧(www.glzy8.com) 详细出处参考:http://www.glzy8.com/article/20091.htm