2017-02-09 9 views
1

チェックボックスの入力タイプが異なる場合、すべての要素をチェックしようとしていますが、別のソリューションを試しましたが機能しませんでした。これは単純ですが、私のコード:jQueryを使ってすべてのチェックボックスをチェックする方法

<ul class="items"> 
    <li class="item checkall"> 
    <label> 
     <input type="checkbox" name="item[]" id="checkAll"> 
     <span></span> 
     <p>Check All Items</p> 
    </label> 
    </li> 
    <li class="item"> 
    <label> 
     <input type="checkbox" name="item[]" id="checkbox" value="1"> 
     <span></span> 
     <p>Learn HTML5.1</p> 
    </label> 
    </li> 
    <li class="item"> 
    <label> 
     <input type="checkbox" name="item[]" id="checkbox" value="2"> 
     <span></span> 
     <p>Learn PHP7</p> 
    </label> 
    </li> 
    <li class="item"> 
    <label> 
     <input type="checkbox" name="item[]" id="checkbox" value="4"> 
     <span></span> 
     <p>Program a Website</p> 
    </label> 
    </li> 
</ul> 

のjQuery:

$(".checkall").click(function() { 
    $('input:checkbox').not(this).prop('checked', this.checked); 
}); 
+0

idの代わりに最初に使用するクラス。 idは一意でなければならず、idを選択するには 'id id'を使い、クラスを選択するには' .class'を使います。あなたがもっとよく見えたら、あなたのような他の多くの質問があります。http://stackoverflow.com/questions/18537609/jquery-checkbox-check-all; http://stackoverflow.com/questions/15504643/check-uncheck-all-checkboxes-with-another-single-checkbox-use-jquery – Alexis

+0

はい。それは簡単です。だから、私の質問です:すべてのチェックボックスをチェックしたい場合、なぜあなたは 'not(this)'ステートメントが必要ですか? –

+0

クリックの代わりに 'change'イベントを使う – Satpal

答えて

4

idHTMLページ内の各要素については、一意である必要があります。だからunique idを保つか、idclassの代わりにcheckboxの代わりにclassを指定してください。 classで維持する独自性はありません。

は、ここでは代わりのidクラスに変更されている.checkAllcheckboxclick/change eventに取り付けて、.checkAllチェックボックスのcheckedプロパティに基づいて、すべての.checkboxプロパティを設定します。以下はスニペットです。

$(".checkAll").on('change',function(){ 
 
    $(".checkbox").prop('checked',$(this).is(":checked")); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<ul class="items"> 
 
    <li class="item checkall"> 
 
    <label> 
 
     <input type="checkbox" name="item[]" class="checkAll"> 
 
     <span></span> 
 
     <p>Check All Items</p> 
 
    </label> 
 
    </li> 
 
    <li class="item"> 
 
    <label> 
 
     <input type="checkbox" name="item[]" class="checkbox" value="1"> 
 
     <span></span> 
 
     <p>Learn HTML5.1</p> 
 
    </label> 
 
    </li> 
 
    <li class="item"> 
 
    <label> 
 
     <input type="checkbox" name="item[]" class="checkbox" value="2"> 
 
     <span></span> 
 
     <p>Learn PHP7</p> 
 
    </label> 
 
    </li> 
 
    <li class="item"> 
 
    <label> 
 
     <input type="checkbox" name="item[]" class="checkbox" value="4"> 
 
     <span></span> 
 
     <p>Program a Website</p> 
 
    </label> 
 
    </li> 
 
</ul>
これに

0

変更あなたのJSを:ここで

<input class="checkall" type="checkbox" name="item[]" id="checkAll"> 

fiddle

です:

$(".checkall").click(function (e) { 
    $('input[type="checkbox"]').not(this).prop('checked', this.checked); 
}); 

そして、あなたの入力にクラスを追加していない要素li

0
$(".checkall").click(function (e) { 

    var list = $(e.target).parents('ul'); 
    $('li:gt(0) label input:checkbox',list).attr('checked', this.checked); 

}); 
+2

このコードスニペットでは、* how *および* why *の問題を解決して、あなたの投稿の品質を改善するための問題を解決しています(// meta.stackexchange.com/q/114762)。 。あなたが今質問している人だけでなく、将来読者のための質問に答えていることを忘れないでください!説明を追加するためにあなたの答えを[編集]し、どんな制限と前提が適用されるかを示してください。 –

+0

@TobySpeight [OK]を、私は次回これらのものの世話をします。 – hdkhardik

関連する問題