Javascript 隐藏元素时,outerWidth()返回不同的值
我正在尝试对这个问题进行一些调整 我遇到的一个问题是,刷新控件后,主控件有点太宽。查看代码,使用以下方法设置宽度:Javascript 隐藏元素时,outerWidth()返回不同的值,javascript,html,css,jquery-ui,jquery-ui-multiselect,Javascript,Html,Css,Jquery Ui,Jquery Ui Multiselect,我正在尝试对这个问题进行一些调整 我遇到的一个问题是,刷新控件后,主控件有点太宽。查看代码,使用以下方法设置宽度: var width = this.element.outerWidth(); 其中,this.element指的是我原来的控件,它已被jQuery UI MultiSelect小部件隐藏 在这里,我可以看到outerWidth()在我的元素被隐藏时返回424,在可见时返回406。(请注意,隐藏元素时,width()也会返回较大的值。) 有人知道为什么或者如何根据控件是否可见而改变
var width = this.element.outerWidth();
其中,this.element
指的是我原来的
控件,它已被jQuery UI MultiSelect小部件隐藏
在这里,我可以看到outerWidth()
在我的
元素被隐藏时返回424,在可见时返回406。(请注意,隐藏元素时,width()
也会返回较大的值。)
有人知道为什么或者如何根据控件是否可见而改变宽度吗?控件可见时返回的值似乎是正确的值
编辑:
我创建了一个来演示这一点。您无法获得
显示的宽度:无代码>元素
您需要使用Position:absolute隐藏它代码>和左侧:-999999px代码>
这里是你需要的css。不要忘记在div包装器上放置position:relative
jsiddle:您的选择
中是否有比选择
本身更宽的选项?@Arbel:不,最宽的选项明显比
窄。我已经考虑过这一点,但仍然不应该因为元素是否可见而改变。我最近回答了一个类似的问题。基本上,当元素被隐藏时,宽度函数不能保证返回准确的宽度。您可以依靠元素可见时获得的读数。->当元素或其父元素被隐藏时,.outerWidth()报告的值不能保证是准确的。@SalmanA:我觉得这种情况很奇怪。我读到它可以为隐藏元素返回0,但我不明白它为我返回的数字来自哪里。无论如何,如果你想把你的回复移到一个答案上,我可以把它们标记为正确答案。