jQuery UI Library 创建带有选项卡式标题栏的对话框

示例

有时,我们可能希望显示具有多个内容窗格的对话框。jQuery UI提供的选项卡可与对话框一起使用,以实现此目的。虽然在对话框的内容容器中包含选项卡可能更常见,但是此示例将演示如何使选项卡列表成为对话框的标题栏。

的HTML

<button id="openButton">
  Open Dialog
</button>
<div id="dialog" style="display:none">
  <div class="ui-tabs">
    <ul>
      <li><a href="#tab_1">Tab 1</a></li>
      <li><a href="#tab_2">Tab 2</a></li>
    </ul>
    <div id="tab_1">
      <p>Tab 1 content...</p>
    </div>
    <div id="tab_2">
      <p>Tab 2 content...</p>
    </div>
  </div>
</div>

jQuery的

$(document).ready(function() {
  // 传递给jQuery UI对话框的选项
  var options = {
    position: {
      my: "left top",
      at: "left top",
      of: window
    },
    autoOpen: false
  };

  /* Initialization */
  // 初始化对话框
  var dialog = $("#dialog").dialog(options);

  // 初始化标签
  var tabs = $(".ui-tabs").tabs();

  /* Gather Elements Before Rearrangement */
  var closeButton = dialog.siblings(".ui-dialog-titlebar").find(".ui-dialog-titlebar-close");
  var initialTitlebar = dialog.siblings(".ui-dialog-titlebar");
  
  // 查找选项卡列表以创建标题栏,添加ui-dialog-titlebar类,然后附加关闭按钮
  var tabbedTitlebar = dialog.find(".ui-tabs ul:first").addClass("ui-dialog-titlebar").append(closeButton);

  /* Arranging */
  // 删除初始标题栏
  $(initialTitlebar).remove();

  // 为tabbedTitlebar创建一个新的.ui-tabs容器
  var tabbedTitlebarContainer = $("<div>", {
    class: "ui-tabs"
  }).append(tabbedTitlebar);

  // 将tabbedTitlebarContainer放在对话框容器之前
  dialog.parents(".ui-dialog").prepend(tabbedTitlebarContainer);

  /* Show the Dialog */
  dialog.dialog("open");

  var openButton = $("#openButton").button().click(function() {
    dialog.dialog("open");
  });
});

供参考的工作示例:https://jsfiddle.net/5x4zz681/