2011-12-25 2 views
1

私はdivにチェックボックスのグループを持っており、私はすべてのチェック/すべてのチェックを使用します。jquery:チェックボックスのグループを作成すると、1つのイベントが発生しますか?

HTML:

<div id="available_options" class="input"> 
<ul class="inputs-list"> 
<li> 
    <label> 
    <input type="checkbox" name="options" id="option_1" /> 
    <span>Option1</span> 
    </label> 
</li> 
<li> 
    <label> 
    <input type="checkbox" name="options" id="option_2" /> 
    <span>Option2</span> 
    </label> 
</li> 
</ul> 
</div> 
<a id="check_all_options">Check all</a>/<a id="uncheck_all_options">Uncheck all</a> 

のjQuery:

$('#check_all_options').click(function(e){ 
     $('#available_options input').attr('checked', 'checked').change(); 
}); 

$('#uncheck_all_options').click(function(e){ 
     $('#available_options input').removeAttr('checked').change(); 
}); 

$('#available_options input').live('change', function(e){ 
     alert('test'); 
}); 

現時点ではチェックボックスが良くなる/未チェックチェックされている時はいつでも私のアラートが発射されます。ただし、「すべてをチェック」/「すべてをオフにする」を使用すると、アラートは複数回発生します(各チェックボックスはイベントを発生しています)。私はstopPropagationで試しましたが、私はそれが私が欲しいことをすることができません。

変更が行われるたびに1回イベントを発生させる方法はありますか?私はデータベースクエリを起動するために選択されたオプションを取得できるようにしたい。しかし、checkall/uncheckallが使われているときに、クエリを何回も起動したくないのです。

おかげ

+0

私は混乱しています。なぜあなたは明示的に 'change'イベントを引き起こしますか?すべての3つのハンドラからajax/dbクエリ関数を呼び出すだけです。 http://jsfiddle.net/liho1eye/95f9Z/ –

+0

あなたのソリューションは私が欲しかったものです。もしあなたがそれを提案すれば、私はあなたに信用を与えることができます。ありがとう – Pierre

答えて

0

再投稿のコメント:

なぜあなたは明示的に変更イベントをトリガしますか?すべての3つのハンドラからajax/dbクエリ関数を呼び出すだけです。例えば、jsfiddleを参照してください。

2

恥知らずな自己宣伝:あなたは、私はこの正確なタスクのために書いたthis jQuery pluginを使用する場合があります。

$('#check_all_options').checkAll('#available_options input[type="checkbox"]', { 
    reportTo: function (numChecked) { 
     console.log(numChecked); 
    } 
}); 

あなたがチェックボックスの数を超えたreportToコールバックでより多くの情報が必要な場合は、私は強くsubmit an issueすることをお勧めします、と私はこの小さなプロジェクトの改善に取り組むことができます:それはこのようになります!


私のプラグインを使用したくない場合は、それも素晴らしいです。あなたはそれがどのように動作するかを見て、変更のための単一のイベントだけをどのように起動するのかを理解することは、依然として歓迎しています。答えとして

+0

あなたの助けてくれてありがとう、あなたのプラグインは良く見えますが、私はこの1つに少し突っ込んでいますので、実際に見る時間がありませんので、私はliho1eyeさんが提案した解決策をとるでしょう – Pierre

+0

心配はいりません。 –

関連する問題