jQuery当所有元素都有类做某事时

时间:2012-04-25 15:48:46

标签: jquery

我在页面上有任意数量的元素,例如。

<div class="choice"></div>
<div class="choice"></div>

当我运行一个函数时,它会在div中添加一个完成的类,以便它们变为:

<div class="choice done"></div>

在这个相同的函数中,每次运行时我都要检查有多少这些选项已经完成了它们的类,当它们全部拥有它时,我将运行另一个函数。

这是我到目前为止所做的:

function addDone(element) {

$num = 0;

$(element).addClass('done');

$('.choice').each(function() {
    if($(this).hasClass('done')) {
        $num + 1;
    }
});

if($num >= $('.choice').length) {
    alert('all done...');
}

}

但是一旦我调用该函数它就会运行警报......所以不能正常工作,任何有关问题的想法或更好的解决方案吗?

注意:在真实应用中,每个选项都有一个id,代替函数中使用的元素变量!

3 个答案:

答案 0 :(得分:4)

您可以将其改为:

  

在没有choice但没有done

的元素时执行某些操作

在这种情况下,以下是一个小整洁:

if (!$(".choice").not(".done").length) {
    alert("all done");
}

Working Fiddle

答案 1 :(得分:2)

$num + 1;

应该是

$num = $num + 1;

除此之外,可能有更好的解决方案,正如其他人所建议的那样。

答案 2 :(得分:1)

if (!$(".choice:not(.done)").length)
    // do your magic here.