我的代码是这样的
//css
li{display:inline-block}
//html #li margin and width are dynamic
<ul>
<li style='margin:30px;width:100px;'>Pic</li>
<li style='margin:40px;width:200px;'>Pic</li>
<li style='margin:10px;width:500px;'>Pic</li>
<li style='margin:50px;width:300px;'>Pic</li>
</ul>
如何制作一个jquery函数,它将li索引作为输入,它将从开头到指数+ margins'left + right'返回所有li的宽度
Examples // something like this
myFunction(1); //output 440 (( 30 margin-left [0] + 30 margin-right [0] + 40 margin-left [1] + 40 margin-right [1] + 100 width [0] + 200 width [1] ))
myFunction(2); //output 960 (( 30 margin-left [0] + 30 margin-right [0] + 40 margin-left [1] + 40 margin-right [1] + 10 margin-left [2] + 10 margin-right [2] + 100 width [0] + 200 width [1] + 500 width [2] ))
答案 0 :(得分:29)
您正在寻找outerWidth(true)
例如
$('li:eq(0)').outerWidth(true)
如果您不想要保证金,但只想要填充和边框,只需outerWidth()
所以你可以正常加上li的外部宽度来得到它们的总和。
答案 1 :(得分:2)
$.fn.sumOuterWidth = function(useMargins) {
var sum = 0;
this.each(function() {
sum += $(this).outerWidth(useMargins);
});
return sum;
};
// example sum the width of the first 2 li's:
$('ul li').slice(0,2).sumOuterWidth(true)
// Also gets the sum of the width of the first 2 li's:
$('ul li:eq(1)').prevAll().andSelf().sumOuterWidth(true);
答案 2 :(得分:0)
//adapt selectors to get only the ul you want
function calculate(i) {
if(i >= $("ul").size()) {
alert("This index doesn't exist");
return;
}
var sum = 0;
for(var j=0; j<=i; j++) {
sum = sum + $("ul li:eq("+j+")").outerWidth(true);
}
alert("li's width for index "+i+" is "+sum)
}