jQuery UI 实例 – 对话框(Dialog)

jQuery UI Dialog(对话框)实例

Dialog 是 jQuery UI 中最常用的组件之一,用于创建模态或非模态弹出窗口,常用于确认提示、表单编辑、内容预览、登录框、提示消息等。它支持拖拽、缩放、按钮、动画、自动居中等功能。

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

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

1. 基础模态对话框

点击按钮打开模态窗口(遮罩背景,阻止页面交互)。

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>jQuery UI Dialog 基础示例</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>
  <button id="openDialog">打开对话框</button>

  <div id="dialog" title="基本对话框">
    <p>这是一个模态对话框示例。你可以点击右上角关闭,或使用按钮关闭。</p>
  </div>

  <script>
    $(function() {
      $("#dialog").dialog({
        autoOpen: false,   // 默认不打开
        modal: true,       // 模态(背景遮罩)
        width: 400,        // 宽度
        height: 300        // 高度
      });

      $("#openDialog").click(function() {
        $("#dialog").dialog("open");
      });
    });
  </script>
</body>
</html>

2. 带按钮的对话框(确认/取消)

自定义底部按钮,支持图标和回调。

<div id="confirmDialog" title="确认删除?">
  <p>此操作不可恢复,确定要删除吗?</p>
</div>

<script>
  $("#confirmDialog").dialog({
    autoOpen: false,
    modal: true,
    resizable: false,
    buttons: {
      "删除": function() {
        alert("已删除!");
        $(this).dialog("close");
      },
      "取消": function() {
        $(this).dialog("close");
      }
    }
  });

  // 示例打开方式
  // $("#confirmDialog").dialog("open");
</script>

3. 可拖拽 + 可缩放 + 其他高级选项

默认支持拖拽标题栏移动,添加 resizable: true 支持缩放。

<div id="advancedDialog" title="高级对话框">
  <p>这个对话框支持拖拽、缩放、动画、自动居中。</p>
  <img src="https://via.placeholder.com/300x150" alt="示例图片">
</div>

<script>
  $("#advancedDialog").dialog({
    autoOpen: false,
    modal: true,
    width: 500,
    height: 400,
    resizable: true,          // 可缩放
    draggable: true,          // 可拖拽(默认true)
    position: { my: "center", at: "center", of: window },  // 居中
    show: { effect: "fade", duration: 500 },               // 打开动画
    hide: { effect: "explode", duration: 500 },             // 关闭动画
    closeOnEscape: true       // Esc键关闭
  });
</script>

4. 事件监听 + 动态内容

<script>
  $("#dialog").dialog({
    open: function() { console.log("对话框打开"); },
    close: function() { console.log("对话框关闭"); },
    resize: function(event, ui) { console.log("新尺寸: " + ui.size.width + "x" + ui.size.height); }
  });
</script>

小技巧

  • 想加载远程内容:使用 open: function() { $(this).load("remote.html"); }
  • 非模态:modal: false
  • 全屏效果:width: $(window).width() * 0.9, height: $(window).height() * 0.9
  • 多个对话框:每个 div 单独初始化即可

Dialog 常用于表单验证、Ajax 提交前确认、图片查看器等。如果你需要 登录表单对话框Ajax 加载内容、或 无标题栏自定义样式 的完整示例,请告诉我更多细节!

文章已创建 4323

发表回复

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

相关文章

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

返回顶部