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

<ul>
    <li><a>Link1</a></li>
    <li><a>Link1</a></li>
</ul>


如何使用jQuery执行以下操作?

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

2)找到每个单独的li元素的宽度

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

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

这不起作用:

$('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);
});


提前致谢!

最佳答案

您忘记了在某些地方使用$的情况,并且尝试获取位于您所在的特定<a>内的<li>宽度,因此您不应重新查询整个DOM。这样做:

$('ul > li').each(function() {
    var liWidth = parseFloat($(this).width());
    var aWidth = parseFloat($(this).find('a').eq(0).width());
    $(this).width((liWidth - aWidth) + liWidth);
});

关于jquery - 简单的jQuery算法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10770766/

10-10 17:16