jQuery UI 实例 – 标签页(Tabs)

jQuery UI Tabs(标签页)实例

Tabs 是 jQuery UI 中最常用的布局组件之一,用于在有限空间内组织多个内容面板,通过点击标签切换显示。常用于后台管理页面、商品详情(描述/参数/评价)、设置面板等。

官方演示地址:https://jqueryui.com/tabs/

下面提供几个渐进实例,从基础到高级,代码使用最新 CDN,可直接复制到 HTML 文件测试。

1. 基础标签页

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>jQuery UI Tabs 基础示例</title>
  <link rel="stylesheet" href="//code.jquery.com/ui/1.13.2/themes/smoothness/jquery-ui.css">
  <script src="//code.jquery.com/jquery-3.6.0.min.js"></script>
  <script src="//code.jquery.com/ui/1.13.2/jquery-ui.min.js"></script>
</head>
<body>
  <div id="tabs">
    <ul>
      <li><a href="#tab1">标签 1</a></li>
      <li><a href="#tab2">标签 2</a></li>
      <li><a href="#tab3">标签 3</a></li>
    </ul>
    <div id="tab1"><p>这是第一个标签页的内容。</p></div>
    <div id="tab2"><p>这是第二个标签页的内容。</p></div>
    <div id="tab3"><p>这是第三个标签页的内容。</p></div>
  </div>

  <script>
    $(function() {
      $("#tabs").tabs();
    });
  </script>
</body>
</html>

2. 常用选项(可折叠、带图标、垂直标签页)

  • collapsible: true:允许全部收起。
  • icons:标签添加图标。
  • orientation: "vertical":垂直标签页(需 CSS 调整)。
<div id="tabs2">
  <ul>
    <li><a href="#tab-a"><span class="ui-icon ui-icon-home"></span>首页</a></li>
    <li><a href="#tab-b"><span class="ui-icon ui-icon-info"></span>关于</a></li>
    <li><a href="#tab-c"><span class="ui-icon ui-icon-contact"></span>联系</a></li>
  </ul>
  <div id="tab-a"><p>首页内容</p></div>
  <div id="tab-b"><p>关于我们</p></div>
  <div id="tab-c"><p>联系方式</p></div>
</div>

<script>
  $("#tabs2").tabs({
    collapsible: true,     // 双击标签可收起所有
    active: 1,             // 默认激活第二个标签(从0开始)
    heightStyle: "content" // 高度自适应内容
  });
</script>

<style>
  /* 垂直标签页示例(替换 orientation 选项) */
  .ui-tabs-vertical { width: 600px; }
  .ui-tabs-vertical .ui-tabs-nav { float: left; width: 150px; }
  .ui-tabs-vertical .ui-tabs-nav li { clear: left; width: 100%; }
  .ui-tabs-vertical .ui-tabs-panel { float: right; width: 430px; }
</style>

3. AJAX 加载内容 + 事件监听

标签内容从远程加载(支持缓存)。

<div id="tabs-ajax">
  <ul>
    <li><a href="content1.html">本地文件1</a></li>
    <li><a href="https://example.com/api/content2">远程内容2</a></li>
    <li><a href="#local-tab">本地内容3</a></li>
  </ul>
  <div id="local-tab"><p>这是本地内容,不需要 AJAX。</p></div>
</div>

<script>
  $("#tabs-ajax").tabs({
    beforeLoad: function(event, ui) {  // 加载前
      ui.panel.html("加载中...");
    },
    load: function(event, ui) {        // 加载完成
      console.log("标签加载完成:" + ui.tab.text());
    },
    activate: function(event, ui) {    // 切换标签时
      console.log("当前标签:" + ui.newTab.text());
    }
  });
</script>

4. 排序 + 动态添加/删除标签

<button id="addTab">添加新标签</button>

<script>
  let tabCount = 4;
  $("#addTab").click(function() {
    const title = "新标签 " + tabCount;
    const content = "<p>这是动态添加的内容 " + tabCount + "。</p>";
    $("#tabs ul").append("<li><a href='#dynamic-" + tabCount + "'>" + title + "</a></li>");
    $("#tabs").append("<div id='dynamic-" + tabCount + "'>" + content + "</div>");
    $("#tabs").tabs("refresh");  // 关键:刷新 tabs
    tabCount++;
  });
</script>

小技巧

  • 排序:结合 Sortable 实现标签拖拽排序。
  • 嵌套:Tabs 内可嵌套 Accordion 或其他 Tabs。
  • 主题:替换 smoothness 为其他主题(如 base、redmond)。

Tabs 是页面布局利器,常与 Accordion 结合实现左侧菜单+内容区。如果你需要 可关闭标签页排序标签、或 完整后台布局模板,请告诉我更多需求!

文章已创建 3350

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部