【问题标题】:jQuery UI switch focus on multiple modal dialogs?jQuery UI 切换焦点在多个模式对话框上?
【发布时间】:2026-02-03 07:00:01
【问题描述】:


是否可以在多个 jQuery UI 模式对话框之间更改焦点?

目前我打开了几个对话框,位置相对和相互移动,所以我可以看到它们。但是,当我单击“背景”中的任何对话框时,它们不会集中注意力。我必须以与打开对话框相反的顺序关闭对话框,以便它们一一获得焦点。

是的,我知道,模式对话框的目的是阻止其他所有内容。
但是它可以阻止除其他模态对话框之外的所有内容吗?

顺便说一句。它不是必须的。我正在寻找一个简单的解决方案。如果它需要对 jquery ui 核心进行大量更改,则不值得花时间

【问题讨论】:

  • 我认为这不是一件容易的事。我的意思是,理论上你必须对与点击事件相关的库进行一些更改,在事件期间应用一些 css 样式等等。除非我真的需要,否则我不会尝试。但是,当然,我可能是错的。 :)

标签: javascript jquery jquery-ui focus modal-dialog


【解决方案1】:

调用对话框实例的moveToTop method (see Methods tab)

FWIW,还有一个焦点事件(请参阅上一个链接上的事件选项卡),这可能有助于了解何时调用该方法。

【讨论】:

  • 谢谢。好主意,但我不能让它完全工作。我尝试将 .moveToTop 方法绑定到单击事件。问题是其他对话框处于非活动/禁用/或任何对话框模式对它们所做的,所以如果它们不活动(已经在堆栈顶部),它们就不会捕获点击事件
  • moveToTop 绝对不适用于模态。我正在尝试解决方法。不完全是我想要的,但足够好。使对话框可拖动并删除额外的覆盖(每个模式对话框设置自己的覆盖)。问题是覆盖层被按钮自动销毁。所以如果你先关闭底部对话框,覆盖就会消失。我将不得不扩展关闭事件以在每次关闭时手动移动单个覆盖。除非有人有更好的主意
  • 我明白了。我确实读到您提到了模态,但我想我没有意识到您正在处理的是什么。我在我构建的系统上做了很多对话,但其中绝大多数不是模态的。所以 moveToTop 对我来说似乎很自然。
  • 没关系,这是一次很好的尝试。无论如何,变通方法执行得非常好。如果您有兴趣,我可以发布代码