2016-11-01 11 views
1

JavaScriptコードを特定のコードに向けようとしていますが、私はほとんどそこにいますが、最後のハードルに落ちました!jQueryが追加のタグ内で動作しない

私はここで作成しようとしているもののフィドルを作成しました。

http://jsfiddle.net/k4mLb14n/1/

 <div class="pricing-levels-3"> 
     <p><strong>Which level would you like? (Select 3 Levels)</strong></p> 
     <input class="single-checkbox"type="checkbox" name="vehicle" value="Bike">Level 1<br> 
     <input class="single-checkbox" type="checkbox" name="vehicle" value="Bike">Level 2<br> 
     <input class="single-checkbox" type="checkbox" name="vehicle" value="Bike">Level 3<br> 
     <input class="single-checkbox" type="checkbox" name="vehicle" value="Bike">Level 4<br> 
     <input class="single-checkbox" type="checkbox" name="vehicle" value="Bike">Level 5<br> 
     <input class="single-checkbox" type="checkbox" name="vehicle" value="Bike">Level 6<br> 
     <input class="single-checkbox" type="checkbox" name="vehicle" value="Bike">Level 7<br> 
    </div> 

    <div class="pricing-levels-3"> 
     <p><strong>Which level would you like? (Select 3 Levels)</strong></p> 
     <label><input class="single-checkbox"type="checkbox" name="vehicle" value="Bike">Level 1</label><br> 
     <label><input class="single-checkbox" type="checkbox" name="vehicle" value="Bike">Level 2</label><br> 
     <label><input class="single-checkbox" type="checkbox" name="vehicle" value="Bike">Level 3</label><br> 
     <label><input class="single-checkbox" type="checkbox" name="vehicle" value="Bike">Level 4</label><br> 
     <label><input class="single-checkbox" type="checkbox" name="vehicle" value="Bike">Level 5</label><br> 
     <label><input class="single-checkbox" type="checkbox" name="vehicle" value="Bike">Level 6</label><br> 
     <label><input class="single-checkbox" type="checkbox" name="vehicle" value="Bike">Level 7</label><br> 
    </div> 

だから、基本的に私は、チェックリストを作成し、あなたが選択できるアイテムの量を制限したい、私のバイオリンに私はそれをしたい正確にどのように最初のリストを持っている - あなたができるだけで3つの項目を選択しますが、2番目のリストでは必要な数だけ選択することができます。

唯一の違いは、チェックボックスが<label>タグであることです。これはどのようにコードを構造化したいのですが、これはJavaScriptが壊れてしまいます。

ここでは、2番目のリストで機能するようにjavascriptを調整します。

var limit = 3; 
$('input.single-checkbox').on('change', function(evt) { 
if($(this).siblings(':checked').length >= limit) { 
this.checked = false; 
} 
}); 

+0

あなただけの1つのレベル上を移動して、すべての子を選択することができ、チェックボックスの 'の$(この).parents(」価格-レベル-3。 ').find(' input.single-checkbox:checked ') ' –

+0

@AbdoAdel' .parents'はここでは良い選択肢ではありません。それは貪欲な方法で、天井に当たるまで上がります。 – undefined

+0

それは非常に正しいです、ありがとうございます@undefined、私は入力時に答えを気付かなかった、私はあなたにあなたに感謝の方法としていくつかの価値を割り当てるか:D –

答えて

2

1つのオプションは、closestメソッドを使用している:

if ($(this).closest('.pricing-levels-3').find(':checked').length > limit) { 
    this.checked = false; 
} 

http://jsfiddle.net/k4mLb14n/2/

関連する問題