【发布时间】:2013-12-04 04:22:41
【问题描述】:
我有这个select 元素,其中包含不同的option。通常select 元素将从最大的option 元素获得其宽度,但我希望select 元素具有更短的默认option 值宽度。当用户选择另一个option 时,select 元素应自行调整大小,以便整个文本始终在元素中可见。
$(document).ready(function() {
$('select').change(function(){
$(this).width($('select option:selected').width());
});
});
问题:
- 在 Chrome (Canary) 上,返回的宽度始终为 0。
- 在Firefox上,在选择较短的选项时,宽度会添加宽度并未调整大小。
- Safari:结果与 Chrome 相同。
【问题讨论】:
-
没有可靠的方法来获取
option元素的宽度。您可以改为获取text属性的长度,并据此猜测所需的宽度。 -
@RoryMcCrossan 我也想过,但是在不同的浏览器屏幕分辨率设置上不会得到不同的结果?我还发现了这个可能的解决方案:jsfiddle.net/zERB7/3
-
这里的简单解决方案:stackoverflow.com/a/55343177/1243247
-
这是一个更现代的 vanilla JS 方法来解决这个问题:stackoverflow.com/a/67239947/4168960
标签: jquery select resize autoresize dom-manipulation