WEB开发网
开发学院WEB开发Ajax Tab页界面,用jQuery及Ajax技术实现 阅读

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

 2009-10-24 11:18:02 来源:WEB开发网   
核心提示: 从桌面开发的时代开始,Tab页就是一个优异的界面布局形式,Tab页界面,用jQuery及Ajax技术实现,兼有菜单的样式和充分复用有限的界面的优点, 到了B/S开发时代, 5,界面以table布局,网页前端布局也把Tab页的布局形式吸收了过来,特别是和Ajax技术结合起来

   从桌面开发的时代开始,Tab页就是一个优异的界面布局形式,兼有菜单的样式和充分复用有限的界面的优点。
   到了B/S开发时代,网页前端布局也把Tab页的布局形式吸收了过来。特别是和Ajax技术结合起来,可以更充分发挥Tab页的良好表现力和数据缓存的优势,是一种良好的网页布局形式。
   网上的Tab页代码很多,实现也大同小异 ,但代码都显得凌乱,若要真的用的话,必须费劲的吃透它,才能进行二次定制开发,为我所用。实际上实现这个Tab页界面非常简单,仅仅是通过Ajax技术偷偷的获取信息,然后在一块区域轮流显示而已(通过显示和隐藏层,或复用一个层,轮流向里边填充Html数据)。
   自己的开发的代码自己最清楚,用起来也应该最顺手,要扩展的话脑子也不犯晕。代码如下,还在不断修改中。

   代码特点:
   1,完全实现Tab逻辑功能,Tab的样式完全交由前端代码控制,十分灵活。
   2,使用Ajax技术,数据从服务器端按需取用,改善了前端的界面观感,提高了页面的性能。在重新浏览器窗口前,所有已经加载的tab页的数据被缓存在浏览器端,不再从服务器端调取,大大节约了网络带宽,改善了界面的性能。
   3,tab页触发可以根据需要选用click或mouSEOver等事件。
   4,可以配置tab加载后默认触发的页。
   5,界面以table布局,只需要配置关键对象的 id 即可工作。

<!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”>
  $(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

Tags:Tab 界面 jQuery

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接