0

選択したクラスを持つページに任意の数の要素があります。

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

関数を実行すると、dive に done のクラスが追加されるため、次のようになります。

<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 があります。

4

3 に答える 3

5

これを次のように言い換えることができます。

choice要素がないときに何かをするdone

その場合、以下は少しすっきりしています。

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

ワーキングフィドル

于 2012-04-25T15:52:16.923 に答える
2
$num + 1;

おそらくあるはずです

$num = $num + 1;

それとは別に、他の人が提案したように、より良い解決策があるかもしれません.

于 2012-04-25T15:57:37.767 に答える
1
if (!$(".choice:not(.done)").length)
    // do your magic here.
于 2012-04-25T15:54:11.513 に答える