Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 隐藏元素时,outerWidth()返回不同的值_Javascript_Html_Css_Jquery Ui_Jquery Ui Multiselect - Fatal编程技术网

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,但我不明白它为我返回的数字来自哪里。无论如何,如果你想把你的回复移到一个答案上,我可以把它们标记为正确答案。