[英]Jquery autocomplete causing page to scroll unnecessarily
Jquery 自动完成有一个令人沮丧的问题。 我有 UL 下拉选项出现在输入下方。 ui-menu
和ui-menu-items
以width:1214px
呈现 - 我假设这是文档宽度或其他东西。 我不知道为什么会发生这种情况,但我可以覆盖 CSS 来修复它。
固定宽度会导致结果列表中出现换行符,这很好。 有限的结果列表仍然很容易适合页面,但由于某种原因页面高度被抛出,我得到一个垂直滚动条。
所有ul
和li
高度在 DOM 资源管理器中都设置为auto
- 为什么会导致页面滚动?
有什么解决方法可以将自动完成框保持在行内?
CSS:
.ui-menu {
...
width:245px;
}
.ui-menu-item{
cursor:pointer;
list-style: none;
...
width:245px;
}
JS:
$.ui.autocomplete.prototype._renderMenu = function( ul, items ) {
var self = this;
$.each( items, function( index, item ) {
if (index < 10)
{self._renderItem( ul, item );}
});
}
输入:
<input type="text" class="Search" id="search_box"/>
我使用appendTo初始化选项解决了这个问题。 我认为问题在于绝对位置自动完成菜单仍在增加主体的高度:通过将 appendTo 选项设置为height: 0px
的 div ,我能够消除该问题。
例子:
Javascript:
$( ".selector" ).autocomplete({
appendTo: "#hidden-stuff"
});
HTML:
<body>
<input class="selector" type="text>
<div id="hidden-stuff" style="height: 0px;"></div>
</body>
尝试设置/覆盖搜索下拉列表的 z-index:
z-index:999 or z-index:1000
我不确定,但它可能会有所帮助。 另一种解决方案是在用户搜索时将溢出设置为隐藏:
因此,只要用户单击输入字段:
$("html,body").css("overflow","hidden");
当输入字段失去焦点时:
$("html,body").css("overflow","auto");
然而这对我来说似乎很奇怪,因为 jQuery UI 应该可以正常工作。
只需将位置:固定到 CSS 类ui-autocomplete 中,如下所示:
.ui-autocomplete
{
position: fixed; /* Prevents page scroll when autosuggestion menu appears */
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.