我有一个位于对话框中的 jQueryUI 自动完成功能。对于某些旧版本的 jQuery/jQueryUI,它会显示返回值列表,而对于最新版本则不会。此外,即使新版本的 jQuery/jQueryUI 似乎不太好用,我也让它在一个页面上正常工作,还有很多其他的东西。显然,我正在发生一些不同的事情,但我似乎无法确定它是什么。我知道我可以使用 css 来更改 z-index,但这似乎有点 hackish。
请看以下两个活生生的例子。
http://jsbin.com/uciriq/3/(使用 jQuery 1.4.3 和 jQueryUI 1.8.4)
http://jsbin.com/uciriq/2/(使用 jQuery 1.9.1 和 jQueryUI 1.10.3)
如所见(或更适用的表述为“未见”),返回的 jQuery 1.9.1/jQueryUI 1.10.3 的自动完成匹配显示在对话框后面。
让返回的自动完成匹配可见的最佳解决方案是什么?
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
<title>autocomplete with dialog</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.js" type="text/javascript"></script>
<link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/themes/ui-lightness/jquery-ui.css" type="text/css" rel="stylesheet" />
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.js" type="text/javascript"></script>
<!--
<link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.4/themes/base/jquery-ui.css" type="text/css" rel="stylesheet" />
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.js" type="text/javascript"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.4/jquery-ui.js" type="text/javascript"></script>
-->
<script type="text/javascript">
$(function() {
$( "#search" ).autocomplete({
source: [ "one", "two", "three" ]
});
$("#dialog").dialog();
});
</script>
</head>
<body>
<div id="dialog" class="dialog" title="Testing">
<div class="ui-widget">
<label for="search">one, two, three: </label>
<input id="search" />
</div>
</div>
</body>
</html>
编辑我相信http://jqueryui.com/upgrade-guide/1.10/ 描述的 jQueryUI 对话框的更改并在下面重复是我的问题的原因。我不确定如何最好地应用它们,并希望得到任何建议。
添加了 appendTo 选项 (#7948) 以前,对话框总是附加到正文中,以确保它们是 DOM 中的最后一个元素,以避免与其他堆叠上下文发生冲突。但是,为了提供更大的灵活性并简化堆叠逻辑,添加了一个 appendTo 选项,该选项默认为主体。查看 API 文档以获取更多信息。
删除了堆栈选项 (#8722) 对话框以前支持堆栈选项,该选项确定对话框在获得焦点时是否应移动到顶部。由于应该始终如此,因此已删除该选项。
删除了 zIndex 选项 (#8729) 与 stack 选项类似,zIndex 选项在适当的堆叠实现中是不必要的。z-index 在 CSS 中定义,现在通过确保焦点对话框是其父级中的最后一个“堆叠”元素来控制堆叠。