jQuery是一个兼容多浏览器的js库,核心理念是write less,do more(写的更少,做的更多),jQuery使用户能更方便地处理HTML documents、events、实现动画效果,并且方便地为网站提供AJAX交互。

  自己用到的一个主页多标签的小例子,用户登录后显示自己的相应菜单和我的主页。

代码如下:

  1. 1     <div id="right" class="content_right">
  2. 2 <div id="line">
  3. 3 <ul id="tabs">
  4. 4 <!-- Tabs go here -->
  5. 5 <li class='current'>
  6. 6 <a class='tab' id="index" href='#'>我的主页</a>
  7. 7 </li>
  8. 8 </ul>
  9. 9 </div>
  10. 10 <div id="tabcontent">
  11. 11 <!-- Tab content goes here -->
  12. 12 <div id="index_tabcontent" style="">
  13. 13 <iframe style='width:100%;height:630px;display:block;border:0' src="default.jsp"></iframe>
  14. 14 </div>
  15. 15 </div>
  16. 16 </div>

  当用户点击左侧菜单是新增新的tab页标签

  

  相应的JQuery代码如下:

  

  1. 1   $(document).ready(function() {
  2. 2 $("li a").click(function() {
  3. 3 if($(this).attr("id")=="index")return;
  4. 4 if ($("#" + $(this).attr("rel")).length != 0){
  5. 5 var contentname = $(this).attr("rel");
  6. 6 // hide all other tabs
  7. 7 $("#tabcontent div").hide();
  8. 8 $("#tabs li").removeClass("current");
  9. 9 // show current tab
  10. 10 $("#" + contentname +"_tabcontent").show();
  11. 11 $("#" + contentname).parent().addClass("current");
  12. 12 }else
  13. 13 addTab($(this));
  14. 14 });
  15. 15
  16. 16 $('#tabs a.tab').live('click', function() {
  17. 17 // Get the tab name
  18. 18 var contentname = $(this).attr("id") + "_tabcontent";
  19. 19
  20. 20 // hide all other tabs
  21. 21 $("#tabcontent div").hide();
  22. 22 $("#tabs li").removeClass("current");
  23. 23
  24. 24 // show current tab
  25. 25 $("#" + contentname).show();
  26. 26 $(this).parent().addClass("current");
  27. 27 });
  28. 28
  29. 29 $('#tabs a.remove').live('click', function() {
  30. 30 // Get the tab name
  31. 31 var tabid = $(this).parent().find(".tab").attr("id");
  32. 32
  33. 33 // remove tab and related content
  34. 34 var contentname = tabid + "_tabcontent";
  35. 35 $("#" + contentname).remove();
  36. 36 $(this).parent().remove();
  37. 37
  38. 38 // if there is no current tab and if there are still tabs left, show the first one
  39. 39 if ($("#tabs li.current").length == 0 && $("#tabs li").length > 0) {
  40. 40
  41. 41 // find the first tab
  42. 42 var firsttab = $("#tabs li:first-child");
  43. 43 firsttab.addClass("current");
  44. 44
  45. 45 // get its link name and show related tabcontent
  46. 46 var firsttabid = $(firsttab).find("a.tab").attr("id");
  47. 47 $("#" + firsttabid + "_tabcontent").show();
  48. 48 }
  49. 49 });
  50. 50 });
  51. 51 function addTab(link) {
  52. 52 // If tab already exist in the list, return
  53. 53 if ($("#" + $(link).attr("rel")).length != 0)
  54. 54 return;
  55. 55
  56. 56 // hide other tabs
  57. 57
  58. 58 $.ajaxSetup({cache:false});
  59. 59 $.ajax({
  60. 60 type:'post',
  61. 61 dataType:'html',
  62. 62 url:"BaseAction_getDirectUrl.jhtml?url="+$(link).attr("name")+"&nocache=" + new Date().getTime(),
  63. 63 success:function(data){
  64. 64 $("#tabs li").removeClass("current");
  65. 65 $("#tabcontent div").hide();
  66. 66
  67. 67 // add new tab and related tabcontent
  68. 68 $("#tabs").append("<li class='current'><a class='tab' id='" +
  69. 69 $(link).attr("rel") + "' href='#'>" + $(link).html() +
  70. 70 "</a><a href='#' class='remove'>x</a></li>");
  71. 71 var $div = $("<div id='" + $(link).attr("rel") + "_tabcontent'></div>");
  72. 72 var $iframe = $("<iframe style='width:100%;height:630px;display:block;border:0'></iframe>");
  73. 73 $iframe.attr("src",data);
  74. 74 $div.append($iframe);
  75. 75 $("#tabcontent").append($div);
  76. 76 },
  77. 77 error:function()
  78. 78 {
  79. 79 //错误处理
  80. 80 $.ligerDialog.open({ target: $("#errorMsg"),title:'错误代码',allowClose:false,width:450,height:180,buttons: [
  81. 81 { text: '返回首页', onclick: function (item, dialog) { parent.location.href=$('#url').val(); } }]});
  82. 82 }
  83. 83 });
  84. 84
  85. 85 // set the newly added tab as current
  86. 86 $("#" + $(link).attr("rel") + "_tabcontent").show();
  87. 87 }

    代码相对简单,就不做过多说明了。

JQuery动态添加多个tab页标签的更多相关文章

  1. Bootstrap 基于Bootstrap和JQuery实现动态打开和关闭tab页

    基于Bootstrap和JQuery实现动态打开和关闭tab页   by:授客 QQ:1033553122 1.   测试环境 JQuery-3.2.1.min.j Bootstrap-3.3.7-d ...

  2. Bootstrap技术: 如何给nav导航组件的tab页增加关闭按钮以及动态的添加和关闭tab页

    先给出示例html代码 <div> <!-- Nav tabs --> <ul class="nav nav-tabs" role="tab ...

  3. 给Jquery动态添加的元素添加事件

    给Jquery动态添加的元素添加事件 来源:[http://wangqixia.diandian.com/post/2011-05-10/6597866] 我想很多人都会向我一样曾经 被新元素的事件绑 ...

  4. [转载]给Jquery动态添加的元素添加事件

    原文地址:给Jquery动态添加的元素添加事件作者:小飞侠 我想很多人都会向我一样曾经 被新元素的事件绑定困惑很久也就是在页面加载完成后给元素绑定了事件,但又新增加的元素上却没有绑定任何事件. js的 ...

  5. jquery 动态添加表格行

    jquery 动态添加表格行 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <h ...

  6. jQuery动态添加删除select项

    // 添加 function col_add() { var selObj = $("#mySelect"); var value="value"; var t ...

  7. jquery 动态添加和删除 ul li列表

    今天需要实现一个jquery动态添加和删除  ul li列表中的li行,自己简单的实现乐一个,分享一下 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML ...

  8. jquery动态添加删除div--事件绑定,对象克隆

    我想做一个可以动态添加删除div的功能.中间遇到一个问题,最后在manong123.com开发文摘 版主的热心帮助下解答了(答案在最后) 使用到的jquery方法和思想就是:事件的绑定和销毁(unbi ...

  9. jQuery动态添加删除CSS样式

    jQuery框架提供了两个CSS样式操作方法,一个是追加样式addClass,一个是移除样式removeClass,下面通过一个小例子讲解用法. jQuery动态追加移除CSS样式 <!DOCT ...

随机推荐

  1. 51Nod 1031 骨牌覆盖 | Fibonacci

    Input 输入N(N <= 1000) Output 输出数量 Mod 10^9 + 7 Input示例 3 Output示例 3 思路:对于第x块骨牌的情况,我们用a[x]表示其方法数:其比 ...

  2. spring mvc 注解详解

    1.@Controller 在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ...

  3. bzoj 2200: [Usaco2011 Jan]道路和航线——拓扑+dijkstra

    Description Farmer John正在一个新的销售区域对他的牛奶销售方案进行调查.他想把牛奶送到T个城镇 (1 <= T <= 25,000),编号为1T.这些城镇之间通过R条 ...

  4. python初步学习-python运算符

    算数运算符 操作 描述 例子 + 加法-对操作符的两侧增加值 a+b=30 - 减法 a-b=30 * 乘法 a * b = 30 / 除法 a/b=30 % 模(取余) a%b=30 ** 指数(幂 ...

  5. list互转datatable 支持Nullable转换

    /// <summary> /// list转datatable /// </summary> /// <param name="list">& ...

  6. 编译zpool命令

    环境:192.168.50.239(在 illumos源码中编译zpool命令) PS:由于对zpool命令的工作原理不熟悉,所以编译,可在其中加入调试语句来明白其原理 首先介绍 illumos-so ...

  7. linux 3389连接工具Rdesktop

    简单使用 工作机换成战斗机了,改用ubuntu,原来的windows7上东西笔记多,还不想重装.用rdesktop来远程连接windows: sudo apt-get install rdesktop ...

  8. fork与printf缓冲问题

    printf输出条件: (1) 调用fflush: (2) 缓冲区满了: (3) 遇到\n \r这些字符 (4) 遇到scanf这些要取缓冲区的: (5) 线程或者进程退出: fork之后会拷贝父进程 ...

  9. 采用dlopen、dlsym、dlclose加载动态链接库【转】

    转自:http://www.cnblogs.com/Anker/p/3746802.html 1.前言 为了使程序方便扩展,具备通用性,可以采用插件形式.采用异步事件驱动模型,保证主程序逻辑不变,将各 ...

  10. Composer 手动安装

    Linux/Mac 环境 sudo wget -O /usr/local/bin/composer https://dl.laravel-china.org/composer.phar sudo ch ...