2011-09-20 9 views
10

質問の下のコンテンツを非表示にして表示するオプション付きのFAQページを作成しました。 私はユーザーがすべての質問をクリックできるようにする「すべてを開く」機能を持っています。 質問が展開されると、「選択済み」のクラスが取得されます。すべてのアイテムが同じクラスであることを確認してください

すべての質問(LI)が展開されているときに「すべて展開」ステータスを変更しようとしています。

すべてのLIにCLASSが同時に選択されていることを確認するにはどうすればよいですか?

私は、LIとそのCLASSを取得するためにEACHメソッドを使用します。事前

+0

でこれを試みることができます。クラス 'selected'を持つリスト項目を選択するだけでは問題ありませんか?あなたがそれをしたいとは思っていませんが、拡張された単一のリスト要素だけを扱うほうが良いようです。 –

答えて

25

おかげであなたはおそらく、すべてのリスト項目に対するselectedクラスでリスト項目を数えることができます。

if ($("#questions li.selected").length == $("#questions li").length) { 
    // all list items are selected 
} 

#questionsはあなたのリストが含まれている要素であり、もちろん、それはあなたの中に異なる場合がありますコードが、あなたはアイデアを得る必要があります。

+0

非常に良いアイデア - 私はそれを試してみましょう!ありがとう! – John

+0

それはうまく動作します - チップのおかげで! – John

7

任意のあそこに残っているかどうかを決定、その後、すべてのリスト項目を選択して、特定のクラスに属するアイテムをフィルタリングして:

if($("li").not(".className").length > 0) { 
    //code 
} 
0

を私は問題ではなく、チェックの場合を理解することを確認していませんjQueryオブジェクトにはクラスがあり、.hasClass()を使用します。

3

li要素の数と、「選択済み」クラスのli要素の数を比較できます。これらの数字が同じである場合は、すべてのliの要素は、そのクラスを持って、それから:

if($("li").length == $("li.selected").length) { 
    //All li elements have class selected 
} 

あなたが任意の時点でこれを行うことができ、それは、eachループ内で行く必要はありません。

+0

Xionごとに - チップのおかげで! – John

0

あなたが正しいと思ったら、ShowAllボタンをクリックすると、すべてのli要素にクラスselectedを設定しますか?

すべてのli要素に対して自分自身を繰り返す必要はありません。

ただ、それらを選択し、それらの上にaddClassを呼び出す:

$('li').addClass('selected'); 
8
$("li:not(.selected)").length 

はあなたの「選択」クラスを持っていない<li>秒数を与えるだろう。この数字がゼロの場合は、あなたのロジックを実行することができます。

2

それとも私は私はあなたが求めているものを手に入れるかわからないsize()

if($("li.success").size() == $("li").size()){ 
    //return true 
} 
関連する問題