- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的场景:
当单击 Dialog1 中的特定元素时,将打开 Dialog2。
当您按 Escape 关闭 Dialog2 时,将按预期工作并关闭 Dialog2。
Dialog1 仍然存在,您可能认为可以通过再次按 Esc 键将其关闭,但事实并非如此。您必须先单击该对话框,然后按 Esc 键才能将其关闭。
这是我尝试过的方法,但没有成功:
// Array to hold all of our open dialogs id's
var openDialogs = [];
// the open: method in my dialog
open: function() {
openDialogs[openDialogs.length] = $(this).attr("id");
}
// the close: method in my dialog
close: function() {
var index = $.inArray($(this).attr("id"), openDialogs),
$previousDialog = (index > 0) ? $("#" + openDialogs[index]) : undefined;
// remove the current dialog from the array via Jon Resig's remove() method
openDialogs.remove(index);
// set focus to previously opened dialog
if ($previousDialog) { $previousDialog.focus(); }
// I've even tried:
//
// if ($previousDialog) { $previousDialog.dialog("moveToTop"); }
}
最佳答案
这一行:
var index = $.inArray($(this).attr("id"), openDialogs),
$previousDialog = (index > 0) ? $("#" + openDialogs[index]) : undefined;
将使$previousDialog
引用当前对话框(正在关闭的对话框)。 index
是正在关闭的对话框的索引。
因此,稍后在这一行:
if ($previousDialog) { $previousDialog.focus(); }
正在关闭的对话框上调用focus()
。
我相信你想要的是这样的:
close: function() {
var index = $.inArray($(this).attr("id"), openDialogs),
$previousDialog = (index - 1 >= 0) ? $("#" + openDialogs[index - 1]) : undefined;
// remove the current dialog from the array via Jon Resig's remove() method
openDialogs.remove(index);
// set focus to previously opened dialog
if ($previousDialog) {
$previousDialog.focus();
}
}
这是一个工作示例:http://jsfiddle.net/L8J7Y/
我还注意到,如果您使用 $previousDialog.dialog("widget").focus();
相反,您可以避免在对话框周围出现可能令人讨厌的虚线。
关于jQuery UI 对话框 closeOnEscape 不适用于多个打开的对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5971462/
给出以下代码: http://jsfiddle.net/UsZG8/1/ $(document).ready(function() {
我有 2 个对话(A 和 B)与 closeOnEscape="true" . 两个对话框都是模态的并且有里面。 对话框 A 打开对话框 B。是的,我知道,这是一个糟糕的设计,但是...... 问题是
我的场景: 当单击 Dialog1 中的特定元素时,将打开 Dialog2。 当您按 Escape 关闭 Dialog2 时,将按预期工作并关闭 Dialog2。 Dialog1 仍然存在,您可能认为
看起来 jQuery UI 对话框中存在一个 bug,其中 closeOnEscape 无法正常工作,因此 escape 仍会关闭对话框。一种可能的解决方案是取消覆盖层上的 keydown 绑定(bi
我在我的项目中使用 JqModal。它是一个不错的 JS 模态。但是我需要一个帮助来将 Close On Escape 按键附加到 JqModal。我在 JqModal 中从外部 URL 加载永恒的内
我是一名优秀的程序员,十分优秀!