2016-12-07 8 views
2

ですべてのチェックボックスのチェックを外し、私はすべてのチェックボックスをチェックし、オフにこのスクリプトを使用しています:チェックとjQuery

$('#checkall').click(function() { 
    var checked = $(this).data('checked'); 
    $('.chkall').find(':checkbox').attr('checked', !checked); 
    $(this).data('checked', !checked); 
}); 

それはすぐに、私は「すべてをチェック」して、ヒットした後、いくつかの確認のチェックボックスのチェックを外して素晴らしい作品が、 「すべてチェックを外す」と「すべてをチェック」を選択すると、チェックされていないチェックボックスはもう一度チェックされません。助けが素晴らしいだろう!どうもありがとうございました!

+3

使用 '.prop()'の代わりに '.ATTR(の)' – Satpal

+0

は、なぜあなたは '' checkall'要素にdata'を設定するのですか?なぜそれはチェックボックス自体ではないのですか? – vsync

+0

checkallはCheckBoxなのでしょうか? – selami

答えて

6

これが正しい方法かもしれません。..

使用は、単に目的を整理するために、attrおよびグループのdiv内のチェックボックスリストの代わりに支えます。 checkedもそのまま使用してください。否定しないでください。

$(document).ready(function() { 
 
    $('#checkall').click(function() { 
 
    var checked = $(this).prop('checked'); 
 
    $('#checkboxes').find('input:checkbox').prop('checked', checked); 
 
    }); 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="checkbox" id="checkall" /> 
 
<label for="checkall">check/uncheck all</label> 
 
<br/> 
 
<br/> 
 
<div id="checkboxes"> 
 
    <input type="checkbox" /> 
 
    <input type="checkbox" /> 
 
    <input type="checkbox" /> 
 
    <input type="checkbox" /> 
 
    <input type="checkbox" /> 
 
    <input type="checkbox" /> 
 
    <input type="checkbox" /> 
 

 
</div>

+0

ありがとうございました!それは素晴らしい作品です! – vloryan

+0

ハァッ。しかし、少し問題があった。すべてのチェックボックスをオフにすると、すべてのチェックボックスの値は、[my link](http://stackoverflow.com/questions/40693232/add-checkbox-values-to-a-link-using-javascript/40693356#40693356)に引き続き転送されます。彼らがチェックされたら? – vloryan

6

$('#checkall').click(function(){ 
 
    var d = $(this).data(); // access the data object of the button 
 
    $(':checkbox').prop('checked', !d.checked); // set all checkboxes 'checked' property using '.prop()' 
 
    d.checked = !d.checked; // set the new 'checked' opposite value to the button's data object 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<button id='checkall' data-checked='false'>check/uncheck all</button> 
 
<input type=checkbox> 
 
<input type=checkbox> 
 
<input type=checkbox> 
 
<input type=checkbox> 
 
<input type=checkbox>


私はあなたのHTMLは、トリガーボタンの面で、同じように見えますが、私は知りませんが、あなたが最初にそれにdataを設定する方法が何であるかを推測しました。これがコード化された方法であることを望みます。そうでない場合は教えてください。

+0

@Satpal - yes、data.checked。どうしたの?私は何をしているのか分からないために27kポイントを持っていません。 – vsync

+0

あなたは編集しました。だから、間違っていたことが分かりました。 27kポイントを誇っている男のための悪い答え – Satpal

+0

@Satpal - 私は答えを書いていて、私が入力している間に変更を加えるのを忘れていました。私を殺して。なぜこれが貧しい答えだと思われるのか説明してください。それは完璧に動作します – vsync

2

すべてのチェックボックスを取得してすべてを確認するだけです。

$('#checkall').click(function() { 
 

 
    var _this = this; 
 
    $('#checkboxes').find('input[name="checkAll"]').each(function() { 
 
    
 
    if ($(_this).is(':checked')) { 
 
     $(this).prop('checked', true); 
 
    } else { 
 
     $(this).prop('checked', false); 
 
    } 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="checkbox" id="checkall" /> 
 
<label for="checkall">check/uncheck all</label> 
 
<br/> 
 
<br/> 
 
<div id="checkboxes" class=".chkall"> 
 
    <input type="checkbox" name="checkAll"/> 
 
    <input type="checkbox" name="checkAll"/> 
 
    <input type="checkbox" name="checkAll" /> 
 
    <input type="checkbox" name="checkAll" /> 
 
    <input type="checkbox" name="checkAll" /> 
 
    <input type="checkbox" name="checkAll" /> 
 
    <input type="checkbox" name="checkAll" /> 
 

 
</div>

関連する問題