0

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

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

我想你会用 $(".answers_total").each 来做这个...

但我不知道在那之后去哪里。关于如何做这样的事情的任何想法?也许这是不可能的,或者有更好的方法来设置和做到这一点?

非常感谢您的帮助

<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>
4

2 回答 2

1

您可以使用jQuery.map()函数返回一个数组。然后使用该属性找出每个中存在.length多少个data-answer=truediv.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

于 2013-08-15T18:03:52.217 回答
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);
});
于 2013-08-15T17:50:23.693 回答