jquery抽象地添加父div的数据值的值

时间:2013-08-15 17:45:43

标签: jquery jquery-data

所以我有几个带有“answers_total”类的div,其中包含五个带有“answer”类和data-answer属性的div。

我想要做的是以某种方式抽象地将每个“answers_total”div的总真值加起来并将它们存储在一个变量中。因此,对于第一个,这里有三个“真实”,而在第二个只有两个“真实”。我需要能够访问每个人的总数,可能每个人都有自己的变量?我不是百分百肯定。

我认为你用$(“。answers_total”)来做这件事。每个......

但是我不确定那之后会去哪里。关于如何做这样的事情的任何想法?也许这是不可能的,或者有更好的方法来设置并执行此操作?

非常感谢您的帮助

<div class="answers_total">
    <div data-answer="true" class="answer">SPEECH</div>
    <div data-answer="false" class="answer">RELIGION AND BELIEF</div>
    <div data-answer="true" class="answer">PRESS</div>
    <div data-answer="true" class="answer">ASSEMBLY</div>
    <div data-answer="false" class="answer">PETITION</div>
</div>
<div class="answers_total">
    <div data-answer="false" class="answer">SPEECH</div>
    <div data-answer="true" class="answer">RELIGION AND BELIEF</div>
    <div data-answer="false" class="answer">PRESS</div>
    <div data-answer="true" class="answer">ASSEMBLY</div>
    <div data-answer="false" class="answer">PETITION</div>
</div>

2 个答案:

答案 0 :(得分:1)

我不确定你在完成之后想要用它做什么,或者你用“抽象”来表达你的意思,但这应该有效:

var answerTotals = [];

$('.answers_total').each(function() {
    var results = { correct: 0, incorrect: 0 };
    $(this).find('.answer').each(function() {
        if ($(this).data('answer') == 'true')
            results.correct++;
        else
            results.incorrect++;
    });
    answerTotals.push(results);
});

答案 1 :(得分:1)

您可以使用jQuery.map()函数返回一个数组..然后使用.length属性查找每个data-answer=true中存在多少div.answers_total

var x = $('.answers_total').map(function(i,v){
    return $('div[data-answer=true]',v).length; // return how many have data-answer=true
});

所以

x[0] = 3 // which is the relevant to the first .answers_total div
x[1] = 2 // which is the relevant to the second .answers_total div

FIDDLE

如果你想要计算真假数,你可以做

var x = $('.answers_total').map(function (i, v) {
    return {
        true: $('div[data-answer=true]', v).length,
        false: $('div[data-answer=false]', v).length
    };
});

然后

x[0].true = 3 // number of true in first div
x[0].false = 2 // number of false in first div
x[1].true = 2 // number of true in second div
x[1].false= 3 // number of false in second div

FIDDLE