jQuery width,outerWidth(),innerWidth()返回不正确的数据

Dan*_*ant 4 javascript jquery element width

出于某种原因,我无法让jQuery为各种元素提供可靠的宽度数据.这是一个演示问题的小提琴的链接:http: //jsfiddle.net/snoopydaniels/ZDbaa/1/

我正在尝试创建一个多维下拉菜单.正如您在jsfiddle中看到的那样,第二个嵌套菜单未正确定位.我用来定位它的jQuery查询兄弟锚元素outerWidth()用于发现它的宽度,然后根据返回的宽度选择嵌套列表的左侧位置.当我在CSS中给兄弟锚元素设置一个宽度然后我得到接近正确值的东西,但没有那个静态宽度,outerWidth()返回"2".

但即使我给锚元素设置了一个宽度,outerWidth(true)仍然没有正确地合并元素的边框.

我要把头发拉出来.为什么这样的废话不能像宣传的那样工作?

Ari*_*iel 14

各种宽度命令不适用于隐藏元素(display: none).

如果使用css设置宽度,jquery将返回该值.否则你将得不到或毫无意义的结果.

经典的解决方案是将元素放在屏幕上,检查宽度,然后隐藏它并将其放回原位.(您可以在一个命令中找到一个jquery插件.)

有时会有重组html和/或css的方法,所以你可以避免这种情况.

有时您可以在显示元素后立即修复大小.

您也可以尝试设置visibilityto hidden,以便元素获得大小,但不可见.根据您的设计,这可能有效.