2012-04-25 59 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; 

除此之外,還有可能是更好的解決方案正如其他人建議。

相關問題