Jquery添加子元素的属性

时间:2014-02-26 10:00:02

标签: jquery loops attributes

我有一个<ul>列表,其中所有子<li>都有一个像这样大小的“自制”属性:

<ul class="container">
    <li size="3"></li>
    <li size="5"></li>
    <li size="2"></li>
</ul>

如何获取所有孩子的大小值然后将其添加到,所以我最终得到一个等于(在这种情况下)10的变量? 孩子的数量和size数字是动态的,所以我猜我需要某种循环?

4 个答案:

答案 0 :(得分:5)

这是最简单的方法:

var sum = 0;

$('.container li').each(function() {
    sum += +$(this).attr('size');
});

console.log(sum);

对于现代浏览器来说,这是一种更复杂的方式:

var sum = $('.container li').map(function() {
    return +$(this).attr('size');
}).get().reduce(function(a, b) {
    return a + b;
});

console.log(sum);

答案 1 :(得分:1)

尝试,

var sum = 0;

$('.container li[size]').each(function(){
  sum += +$(this).attr('size');
});

console.log(sum);

注意:坦率地说,我只是从VisioN的答案中复制了总结内容。

答案 2 :(得分:0)

你的意思是:

var sum = 0;
$('.container li').each(function() {
var p = parseInt($(this).prop('size'));
sum += p;
});
alert(sum);

<强> Working Fiddle

答案 3 :(得分:0)

试试这个

$(function(){
    var sum = 0;
    $(".container>li[size]").each(function(){
        var p = parseInt($(this).attr('size'));
        sum += p;
    });
    alert(sum);
});

DEMO