在多个列表中选择/取消选中复选框

时间:2016-08-28 19:40:08

标签: jquery checklistbox

我有一个来自另一个程序员的Jquery脚本,允许我在列表中选择/取消选中复选框。它适用于单个列表,但我希望能够在页面上有更多列表。我不知道该怎么做。

选中所有子主题后,还会自动检查主要点。我想知道的是如何让它工作,以便所有列表彼此独立。

代码在这里:     https://codepen.io/matthains/pen/akZGRv

<ul><!-- First topic here -->
    <li><input type="checkbox" id="select_all"/> Main Point is here</li>
    <li><input class="checkbox" type="checkbox" name="check[]">Subpoint 1</li>
    <li><input class="checkbox" type="checkbox" name="check[]">Subpoint  2</li>
    <li><input class="checkbox" type="checkbox" name="check[]">Subpoint  3</li>
</ul>

<ul><!-- Second topic here -->
   <li><input type="checkbox" id="select_all"/> 2nd Main Point is here</li>
   <li><input class="checkbox" type="checkbox" name="check[]">Subpoint 1</li>
   <li><input class="checkbox" type="checkbox" name="check[]">Subpoint 2</li>
   <li><input class="checkbox" type="checkbox" name="check[]">Subpoint 3</li>
</ul>

1 个答案:

答案 0 :(得分:0)

试一试:

$(document).ready(function(){

    $("#select_all_part1").on("change", function() {
        $(this).closest("ul").find(".checkbox").prop("checked",$(this).prop("checked"));
    })


    $("#select_all_part2").on("change", function() {
        $(this).closest("ul").find(".checkbox").prop("checked",$(this).prop("checked"));
    })

    $(".checkbox").on("change",function(){
        if (!$(this).prop("checked")) {
            $(this).closest("ul").find("input:first").prop("checked",false);
        }
        else {
            $len = $(this).closest("ul").find(".checkbox:checked").length;
            if($len == 3)
                $(this).closest("ul").find("input:first").prop("checked",true);

        }
    })
})

最终代码:

&#13;
&#13;
<!DOCTYPE html>
<html>
    <head>
         <style>
             li {
                 list-style: none;
              }
         </style>
    </head>
    <body>
        <ul><!-- First topic here -->
            <li><input type="checkbox" id="select_all_part1"/> Main Point is here</li>
            <li><input class="checkbox" type="checkbox" name="check[]">Subpoint 1</li>
            <li><input class="checkbox" type="checkbox" name="check[]">Subpoint  2</li>
            <li><input class="checkbox" type="checkbox" name="check[]">Subpoint  3</li>
        </ul>

        <ul><!-- Second topic here -->
               <li><input type="checkbox" id="select_all_part2"/> 2nd Main Point is here</li>
               <li><input class="checkbox" type="checkbox" name="check[]">Subpoint 1</li>
               <li><input class="checkbox" type="checkbox" name="check[]">Subpoint 2</li>
               <li><input class="checkbox" type="checkbox" name="check[]">Subpoint 3</li>
        </ul>
        
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
    <script>
    $(document).ready(function(){

        $("#select_all_part1").on("change", function() {
            $(this).closest("ul").find(".checkbox").prop("checked",$(this).prop("checked"));
        })


        $("#select_all_part2").on("change", function() {
            $(this).closest("ul").find(".checkbox").prop("checked",$(this).prop("checked"));
        })

        $(".checkbox").on("change",function(){
            if (!$(this).prop("checked")) {
                $(this).closest("ul").find("input:first").prop("checked",false);
            }
            else {
                $len = $(this).closest("ul").find(".checkbox:checked").length;
                if($len == 3)
                    $(this).closest("ul").find("input:first").prop("checked",true);

                     }
                 })
            })
    </script>
    </body>  
</html>
        
&#13;
&#13;
&#13;