2012-03-31 20 views
0

enter image description here私はグループのチェックボックスを格納した後、これらのボックスにイベントを追加することはできません私は何か間違っていると思う..いずれか正しい私のコード?jquery配列の格納されたチェックボックスが応答しない

ユーザーがチェックボックスをクリックした後、他のグループに切り替えた場合、さらにグループをチェックすることができます(最大4つまで許可)。残りのグループはチェックを外す必要があります。選択したグループから4を確認します。

私はこれをグループ化しています。次に、無効にする必要があり、4つの選択肢を許可するようにグループ化できません。

var geoGroup = []; 

$('input:checkbox','#geography').each(function(i){ 
    if(typeof geoGroup[$(this).attr('name')] == 'undefined') 
     geoGroup[$(this).attr('name')] = []; 
    geoGroup[$(this).attr('name')].push($(this)); 

    $('input:checkbox',geoGroup[$(this).attr('name')]).live('click', function(){ 
     alert('hi') 
    }) 
}) 
+0

はあなたが関連付けられているHTMLを提供することができますしてください? – mcgrailm

+0

画面は参考のため、参考に – 3gwebtrain

答えて

1

あなたはjQueryの1.7を使用on()を使用しているのではなくlive()として生きる廃止予定されている場合。以下は配列を使用せず、単に他のグループのチェックを外します。

は、各グループがクラス= 'checkgroup' がコンテナに包まれていることを前提とし

デモ:http://jsfiddle.net/dqQwB/1/

$('#geography').on('change', 'input:checkbox', function() { 
    $('.checkgroup').not($(this).closest('.checkgroup')).find('input:checkbox').prop('checked', false); 
}); 
+0

です。しかし、私は常に他のグループを追加する資格があるチェックグループが必要です。私はそれを試してみましょう。ありがとう。 – 3gwebtrain

+0

もしあなたがhtmlを提供していたら、デモを作成して問題を理解するのがはるかに簡単だったでしょう。 4の制限は、理解するのは容易ではなく、ルールが正確であるかどうかまだ分かりませんでした。 jQuery ':checked'セレクタでチェックされている数を簡単に数えることができます – charlietfl

+0

このバージョンではグループ内で4に制限され、グループ内では他のグループが無効になりますhttp://jsfiddle.net/dqQwB/2/ – charlietfl

0

マイナークリーンアップでは、正常に動作します。 http://jsfiddle.net/imsky/j87Sx/1/

var geoGroup = []; 
$("input:checkbox", "#geography").each(function() { 
    var name = $(this).attr("name"); 
    if (name != null) { 
     geoGroup[name] = $(this); 
     geoGroup[name].click(function() { 
      alert("hello"); 
     }); 
    } 
}); 
+0

画面が添付されており、ありがとう – 3gwebtrain

0
:マイナーなバグがその中に(私の例で繰り返し)あなたの元のコードにあります、あなたは、配列項目に子がないので、横断する必要がないときに、配列項目のコンテキストを使用してトラバース

あなたが望むものを得るために配列を必要としません。

 $('input:checkbox', "#geography").each(function(i){ 
      $(this).click(function(){ 
       var name = $(this).attr('name'); 
       $('input:checkbox', "#geography").each(function(i){ 
        if($(this).attr('name') != name){ 
         $(this).attr("checked", false); 
        } 
       }); 
      }) 
     }); 
+0

画面が添付されており、ありがとうございます – 3gwebtrain

関連する問題