如何使用 jQuery 测量元素宽度
我有一个恼人的错误,我忘记了为什么会发生:
我有一个普通的 html 列表
<ul> <li>Some text</li> <li>Another Text </li> <li>text</li> <li>another one</li> </ul>
,我正在尝试测量每个 li 宽度
我试图编写此 jQuery 代码:
for (var i=0; i++; i <4)
{
$("ul li")[i].width();
}
但不知怎的,这不起作用 - 我做错了什么在这句话中 $("ul li")[i].width();
?
I am having an annoying bug that I forgot why it happens:
I have an ordinary html list
<ul> <li>Some text</li> <li>Another Text </li> <li>text</li> <li>another one</li> </ul>
and I am trying to measure each li width
I was trying to write this jQuery code:
for (var i=0; i++; i <4)
{
$("ul li")[i].width();
}
but somehow that doesn't work - what am I doing wrong in this sentence $("ul li")[i].width();
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
使用
.each()
< 遍历一组元素要简单得多/a> 函数。This is far more simple to walk over a set of elements with the
.each()
function.要在自定义循环中使用,您需要使用
.eq()
方法(并且您应该缓存元素列表,而不是重新搜索所有元素),或者您可以使用
.each()
迭代列表For use in a custom loop, you need to use the
.eq()
method (and you should cache the list of element, instead of re-searching for all of them)or you can use the
.each()
to iterate over the list$("ul li")[i]
返回的是 DOM 元素,而不是 jQuery 对象。使用:另请注意,在循环外部使用选择器一次,然后对其进行迭代,而不是每次都重复选择。
$("ul li")[i]
is returning you a DOM element, not a jQuery object. Use:Note also, using the selector once outside the loop and them iterating over it, rather than repeating the selection every time.
当您将索引器与 jquery 对象一起使用时,您将获得 DOM 元素。
尝试:
When you use an indexer with a jquery object, you get the DOM elements.
try:
访问 jQuery 对象上的数组项将返回实际的 DOM 对象,而不是用 jQuery 的糖包裹的对象。请改用
$(...).eq(0).width()
。另外,您可以只使用
each()
方法来迭代所有项目,而不是使用for
循环,恕我直言,这更容易、更美观、更优雅。Accessing array items on jQuery objects will return you the actual DOM object, not the one wrapped with jQuery's sugar. Use
$(...).eq(0).width()
instead.Also, you can just use the
each()
method to iterate over all the items instead of afor
loop, which is much easier, nicer-looking and elegant IMHO.