从理论上讲,如果我有一个无序列表
<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/