回答
这一次花了一点努力,但我相信我有一个合理的解决方案。这主要需要为了改变菜单的默认行为结合到自动完成构件的“开放式”的事件,因为它显示,以及修改几个CSS属性来帮助我们。
的方法带有一个警告:这将导致后台酒吧仅跨越文本的长度而不是在IE7中菜单的所有道路。它将在IE8 +以及所有其他主流浏览器中正常运行。我会鼓励你把它当作一个问题,因为你会定制解决方案的视觉差异的市场份额不到3%,甚至可能你的实际收视率更低。
的CSS
.ui-autocomplete {
max-height: 200px;
overflow-y: auto;
overflow-x: hidden;
}
.ui-autocomplete .ui-menu-item a {
padding-right: 20px;
}
这些样式添加到您的项目,以帮助有视觉显示。 .ui-autocomplete样式对于创建可滚动的菜单项目列表相当标准,并且您可能已经在使用它了。适用于锚点的正确填充是为Firefox和Webkit浏览器中的滚动条提供适当的空间。它比直接应用于UL容器更好。
jQuery的
$(".myAutoComplete").autocomplete({
...
open: function(e, ui) {
$("ul.ui-autocomplete:visible").css("width", "").find("a").html(function(i, html) {
return html.replace(/\s/g, " ");
});
}
...
});
绑定到开放事件的处理是在它的作用主要是显而易见的。首先,它使用的选择器查找唯一可见的自动完成菜单。谢天谢地,只有在显示自动完成菜单后,才会打开该事件。这有助于您的处理程序在网页上有多个自动填充小部件的情况下引起注意。从那里,它将删除直接应用于无序列表的CSS的“width”属性。然后,在列表中查找所有的锚后裔,并没有一个全球性的与非中断空格在HTML中的所有空白代替。该NBSP迫使锚通过增加其宽度,而不是文本换行到一个新行,从而提高整个菜单的宽度做出回应。
您可以see a working demo here。我建议在“ab”后面加上“deep”,以便在发生变化时查看调整大小的差异。对不起,代码中的颜色很长(sorce),但我想让您有机会获得一系列可能的建议,以查看调整大小的差异。
编辑
不知道我在想什么,但今天,更简单的方法是提供以下附加风格和沟开放的事件处理程序:
.ui-autocomplete .ui-menu-item a {
white-space: nowrap;
}
在在CSS确保宽度设置为auto
:
.ui-autocomplete {
height: 250px;
max-height: 250px;
overflow-y: auto;
/* prevent horizontal scrollbar */
width:auto;
}
凡自动完成小部件CRE ates列表项将li空白样式设置为nowrap
:
input.data("autocomplete")._renderItem = function(ul, item) {
return $("<li style='white-space:nowrap;'></li>")
.data("item.autocomplete", item)
.append("<a>" + item.label + "</a>")
.appendTo(ul);
};
- 1. 定制jQuery UI的Autcomplete
- 2. 的jQuery - autcomplete插件
- 3. 基于div内容的jQuery克隆
- 4. 基于jQuery UI的CSS
- 5. 基于内容动态添加类Jquery
- 6. 我不能让它工作,autcomplete从jQuery UI的
- 7. 的Javascript:基于内容
- 8. Autcomplete Jquery UI在第一次输入时不起作用
- 9. 将css autcomplete与Eclipse中的jsp内容链接起来
- 10. 如何基于内容
- 11. IP内容基于国家
- 12. SQL创建基于内容
- 13. jQuery UI的幻灯片内容输出,新的内容在
- 14. Jquery UI的Tab内容分页
- 15. 刷新jQuery UI对话框的内容
- 16. jQuery UI CSS使Firefox中的对话框内容不同于Chrome
- 17. jQuery UI排序不适用于动态加载的内容
- 18. 查找基于文本内容
- 19. 基于jQuery UI自动完成功能
- 20. 的Groovy/Grails的 - 修改基于内容
- 21. 隐藏内容基于高度变化
- 22. 基于另一个JComboBox的内容的动态JComboBox内容
- 23. 基于日期显示内容的Jquery或Javascript帮助2
- 24. 更换TD中的内容基于使用jQuery
- 25. 基于内容改变jquery数据表单的背景
- 26. jQuery UI可拖动iFrame内容
- 27. jQuery UI对话框添加内容
- 28. jQuery UI - >处理动态内容?
- 29. 如何做基于内容的授权?
- 30. 基于前缀删除列的内容
完美的,非常感谢你这么详细的帖子。 – Raoul 2011-06-14 09:06:04
狡猾的计划,但我最终只是将宽度设置为'$(e.target).outerWidth()'而不是方法。 – 2013-06-11 21:00:52
回想起来,将'white-space'设置为'nowrap'的CSS样式重写可能会做到。 – lsuarez 2013-06-11 22:08:51