2017-03-14 5 views
0

次のコードを使用していますが、チェックボックスを切り替えると正しく表示されません。Jquery - issueトグルチェックボックス

チェックボックスを手動でチェックして設定すると問題が発生します。

コードを実行すると、チェックボックスがオンになりますが、もう一度クリックすると、以前チェックされていないチェックボックスのみがオフになります。

$(".all").click(function(e) { 
    var checked = !$(this).data('checked'); 
    $('.trigger').attr('checked', checked); 
    $(this).data('checked', checked); 
}); 

私はチェックを実行するために私の要素としてinput type='image'を使用しています。

<input type="image" class="all" title="All" src="toggle.png"/> 

私は以下を使用しようとしましたが、それが実行されると、チェックボックスをオフにしてから、私が使用する画像を削除して呼び出します。

$('.all').toggle(function(){ 
    $('input:checkbox').attr('checked','checked'); 

},function(){ 
    $('input:checkbox').removeAttr('checked'); 
}) 

これを正しく行う方法については、誰でも助言できますか?

おかげ

+0

あなたの質問で[mcve]を投稿してください。あなたが記述している振る舞いを観察できるように、 '<>'アイコンを使って直接スタックスニペットを追加してください。 – j08691

+0

カスタムデータ値ではなくチェックボックスに対して ':checked'を使います。 '.all'コードでデータ値を設定/解除します。 –

+1

重複したコードの例https://jsfiddle.net/7sm17x1k/ – DaniP

答えて

0

あなたが「確認」属性に基づいて選択する必要が切り替えたい場合:

$('.all').click(function(){ 

    var checked = $('input:checkbox').not(':checked'); 
    $('input:checkbox:checked').removeAttr('checked'); 
    checked.attr('checked','checked'); 
    }); 

私はこのビットとビット混乱は「だけではなかったものをオフに以前にチェックされた ' - 何を意味するのか、チェックされなかったものはチェックされないことがあります。ところでhttps://jsfiddle.net/4ckjwv8b/

:ここ

は作業フィドルです。 1つのオプションを常に選択したい場合は、入力タイプ 'radio'を使用できます。

+0

これは私にとってはうまくいかないようです。トグルを使用すると、トグルをトリガーするために使用しているイメージが非表示になります。 – Tom

+0

私は自分の答えを更新し、トグルの代わりにクリックを使用し、また「チェック済み」を変数に保存する必要があります。そうでなければ、次の行でチェックが外され、選択されます。 – Martina