当前位置: 代码迷 >> JavaScript >> 复选框的嵌套功能
  详细解决方案

复选框的嵌套功能

热度:351   发布时间:2014-01-08 00:30:58.0
【求助】复选框的嵌套功能

我想达到的功能是点全选,下面的框全部选中,点分组1,则分组1下面的选中,点分组2,则分组2下面的选中
分组1或分组2中任意一个没选中,全选框则不选中,分组1或者分组2的框也不选中.
最后取得选中的框的值

------解决方案--------------------
引用:

<table>
    <ul>
        <li>
            <lable><input name="all" value="all" type="checkbox"/>all</lable>
            <ul id="childs">
                <li><lable><input name="a" value="1" type="checkbox"/>1</lable>
                    <ul>
                        <li><lable><input name="a" value="1-1" type="checkbox"/>1-1</lable></li>
                        <li><lable><input name="a" value="1-2" type="checkbox"/>1-2</lable></li>
                        <li><lable><input name="a" value="1-3" type="checkbox"/>1-3</lable></li>
                    </ul>
                </li>
                <li><lable><input name="a" value="2" type="checkbox"/>2</lable>
                    <ul>
                        <li><lable><input name="a" value="2-1" type="checkbox"/>2-1</lable></li>
                        <li><lable><input name="a" value="2-2" type="checkbox"/>2-2</lable></li>
                        <li><lable><input name="a" value="2-3" type="checkbox"/>2-3</lable></li>
                    </ul>
                </li>
            </ul>
        </li>
    </ul>
</table>
<script>
    var childs = $("#childs"),
        all = $("input[type=checkbox][name='all']"),
        childCount =  childs.find("input[type=checkbox]").length;
    $("input[type=checkbox]").change(function(){
        var _this = $(this);
        if(this.value.indexOf("-") === -1){
            _this.closest("li").find("ul input[type=checkbox]").prop("checked",_this.is(":checked"));
        } else {
            var _ul = _this.closest("ul");
            _ul.closest("li")
                    .find("input[type=checkbox]:first")
                    .prop("checked",_ul.find("input[type=checkbox]:checked").length === _ul.find("input[type=checkbox]").length);
        }
  相关解决方案