2012-04-25 61 views
0

我有一个选择类的页面上有任意数量的元素,例如,jQuery当所有元素都有一个类别做某事

<div class="choice"></div> 
<div class="choice"></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,代表函数中使用的元素变量的位置。

+0

尝试'alert('all done ...');' – kev 2012-04-25 15:50:25

+0

这只是一个错字在这里! – Cameron 2012-04-25 15:50:53

+0

@Cameron如何对'.done'和'.choice'进行长度比较,而不是在每个'.done'上执行'.hasClass'。像'if($('。choice')。length == $('。done')。length){alert('All done'); }'。如果它在包装内 – 2012-04-25 15:52:41

回答

4

你可以改写这个为:

做一些事情的时候有与choice但没有done

在这种情况下,下面是一个小整洁无元素:

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

Working Fiddle

+0

@gdoron true;更新 – 2012-04-25 15:56:05

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

'.choice:not(.choice)'将总是返回一个空集 - 大概你的意思是'.choice:不((.done)' – 2012-04-25 15:56:52

+0

@SteveGreatrex。是的,不行我不会写在我的简历中... – gdoron 2012-04-25 16:11:40

2
$num + 1; 

大概应该是

$num = $num + 1; 

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

相关问题