首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >简单的jQuery算法

简单的jQuery算法
EN

Stack Overflow用户
提问于 2012-05-27 08:24:33
回答 3查看 765关注 0票数 1

从理论上讲,如果我有一个无序项目的列表

代码语言:javascript
复制
<ul>
    <li><a>Link1</a></li>
    <li><a>Link1</a></li>
</ul>

我怎样才能用jQuery做以下事情?

1)找到每个单独a元素的宽度

2)找出每个li元素的宽度

3)从父a元素的宽度中减去每个子li元素的宽度

4)然后将总和添加到每个父li元素

这不起作用:

代码语言:javascript
复制
$('ul > li').each(function() {
  var liWidth = (this).width();
  var aWidth = ('ul > li > a').width();
  var subractedWidth = parseFloat(liWidth) - parseFloat(aWidth);
  var newWidth = subtractedWidth + parseFloat(liWidth);
  $(this).css('width',newWidth);  
});

提前感谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-05-27 08:28:53

您在一些地方忘记了使用$,并且您正在尝试获取在您所在的特定<li>内的<a>宽度,因此您不应该重新查询整个DOM。这样就可以了:

代码语言:javascript
复制
$('ul > li').each(function() {
    var liWidth = parseFloat($(this).width());
    var aWidth = parseFloat($(this).find('a').eq(0).width());
    $(this).width((liWidth - aWidth) + liWidth);
});
票数 2
EN

Stack Overflow用户

发布于 2012-05-27 08:53:11

你可以这样做

代码语言:javascript
复制
$('ul > li > a').each(function () {
    var li = $(this).closest('li'), 
        liWidth = li.width(),
        aWidth = $(this).width();

    li.width(liWidth + (liWidth - aWidth));
});
票数 1
EN

Stack Overflow用户

发布于 2012-05-27 08:30:57

看来你忘了带$了。

代码语言:javascript
复制
$('ul > li').each(function() {
  var liWidth = $(this).width();
  var aWidth = $(this).find('a').width();
  var subractedWidth = parseFloat(liWidth) - parseFloat(aWidth);
  var newWidth = subtractedWidth + parseFloat(liWidth);
  $(this).css('width',newWidth);  
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10770766

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档