我已经在我的网页上使用jquery自动完成了一段时间,但是在从1.8rc3将jquery ui更新到版本1.8.6后,自动完成ul对象现在被附加到正文而不是直接在给定的选择器之后。
下面的代码当然无效,只是突出了我遇到的问题。
在1.8rc3
$("#myinput").autocomplete(.....
<input id="myinput"/>
<ul id="autocomplete"></ul>
<div>Loads of other content</div>
<div>Loads of other content</div>
<div>Loads of other content</div>
</body>
在1.8.6
$("#myinput").autocomplete(.....
<input id="myinput"/>
<div>Loads of other content</div>
<div>Loads of other content</div>
<div>Loads of other content</div>
<ul id="autocomplete"></ul>
</body>
所以我的问题是,有没有办法让自动完成程序在我给定的选择器后追加而不是附加到正文?
答案 0 :(得分:14)
您可以使用选项“appendTo”
$("#input").autocomplete({
appendTo: $("#input").next()
});
但是你可能只会附加到某个容器上。如果您希望能够在输入后立即附加自动完成,那么您必须直接调整自动完成源(更改appendTo()for after())
答案 1 :(得分:5)
原始答案帮助我找到了一个更简单的解决方案。
我的情况有点不同:我试图在(Bootstrap)模式中使用自定义自动完成功能。另外,我使用的是更新版本的jquery-ui(1.11.4)。希望我的答案能为任何获得此帖的人增添价值。
根据the documentation选项 appendTo :
当值为null时,将检查输入字段的父项 对于一类ui-front。如果具有ui-front类的元素是 发现,菜单将附加到该元素。
通过向父元素(在我的情况下,模态中)添加一个类 ui-front ,我能够从幕后输入下拉列表并进入模态。
因此,您可以将输入包装在容器中,并将容器添加到 ui-front 类中。