[英]Get width of ul in jQuery
我需要获取具有动态宽度的<ul>
的宽度,以便将其封闭<li>
的宽度设置为 IE7 的<ul>
的宽度。
<ul>
的样式为display:block
。 目前 jQuery 的.width()
返回0
。 我试图获得最宽的<li>
宽度,因为它设置了<ul>
的宽度,但在这里,我也得到0
吗?
有没有办法(或解决方法)来获得<ul>
或其<li>
的宽度?
劳拉
尝试使用“offsetWidth”方法:
<ul id="MyElement" style="display:block;visibility:hidden;">
<li>Hello World!</li>
<li>Hellow Web!</li>
</ul>
<script type="text/javascript">
alert(document.getElementById('MyElement').offsetWidth);
</script>
它应该返回元素的动态宽度。
或者,如果您想要 jQuery 尝试将其添加到您的 jQuery 文件 (jquery.js)
jQuery.fn.offsetWidth = function () {
return this.offsetWidth;
}
如果它设置为隐藏(似乎是问题)并且仍然返回 0 作为宽度,请尝试克隆元素(要从中获取宽度的元素)。 设置 ZC7A62 position:absolute; left:-200; top -200;visibility:visible;
position:absolute; left:-200; top -200;visibility:visible;
你的元素副本。 获取元素副本的宽度 jQuery 或仅 JavaScript。 删除元素副本。 你现在应该得到宽度。 top
和left
设置为负数,因此元素副本不会出现在屏幕上。
请注意,这会使您的执行速度变慢一些。
jQuery 不喜欢隐藏元素: jQuery - 不可见时获取元素的宽度(显示:无)
您是否将脚本编写为 $(document).ready() 处理程序的一部分? 喜欢:
$(document).ready(function() {
// Here.
});
还是在页面加载时运行? 也许您的脚本是在<ul>
的宽度设置之前执行的。
你需要列表项有项目符号吗? 如果您不这样做,则可以通过将display:block
应用于<li>
s,仅使用 CSS 来解决此问题。
我做下拉菜单的方法是将它们设置为 position: absolute 和 left: -5000px (而不是 display: none)。 这样,您可以在想要隐藏/显示它们时设置/删除“左”属性,并且元素的尺寸始终可用。 由于您没有发布任何代码/标记,我不确定这个建议是否适用于您的情况,但我想我会把它扔掉。
至于回答您的问题,您应该使用 offsetWidth,并记住将元素的填充、边框宽度和边距值也添加到 offsetWidth 中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.