jquery树形结构

<div class="tree_content">
        <div class="tree_node">
            <div class="div_inline"><input type="button" value="-" class="tree_node_toggle_button"></div>
            <div class="div_inline tree_node_parent">
                <input type="checkbox" class="tree_node_parent_checkbox">父节点1
                <div class="tree_node_child">
                    <input type="checkbox" class="tree_node_child_checkbox">子节点1<br>
                    <input type="checkbox" class="tree_node_child_checkbox">子节点2<br>
                    <input type="checkbox" class="tree_node_child_checkbox">子节点3<br>
                </div>
            </div>
        </div>
        <div class="tree_node">
            <!-- 切换子目录隐藏或显示的按钮 -->
            <div class="div_inline"><input type="button" value="-" class="tree_node_toggle_button"></div>
            <div class="div_inline tree_node_parent">
                <input type="checkbox" class="tree_node_parent_checkbox">父节点2
                <div class="tree_node_child">
                    <input type="checkbox" class="tree_node_child_checkbox">子节点1<br>
                    <input type="checkbox" class="tree_node_child_checkbox">子节点2<br>
                    <input type="checkbox" class="tree_node_child_checkbox">子节点3<br>
                </div>
            </div>
        </div>
        <div class="tree_node">
            <div class="div_inline"><input type="button" value="-" class="tree_node_toggle_button"></div>
            <div class="tree_node_parent div_inline">
                <input type="checkbox" class="tree_node_parent_checkbox">父节点3
                <div class="tree_node_child">
                    <input type="checkbox" class="tree_node_child_checkbox">子节点1<br>
                    <input type="checkbox" class="tree_node_child_checkbox">子节点2<br>
                    <input type="checkbox" class="tree_node_child_checkbox">子节点3<br>
                </div>
            </div>
        </div>
    </div>
 .div_inline {
    display:inline;
}
/* 设置子节点属性 */
.tree_node_child {
    margin-left:50px;
}
// 页面加载完成后调用
        $(function(){
            // 为所有的父节点添加点击事件
            $(".tree_node_parent_checkbox").click(function(){
                // 获取父节点是否选中
                var isChange = $(this).prop("checked");
                if(isChange){ // 如果选中,则父节点下的所有的子节点都选中
                    // 获取当前checkbox节点的兄弟节点下的所有的checkbox子节点选中
                    $(this).next().find(".tree_node_child_checkbox").prop("checked", true);
                }else{ // 未选中,取消全选
                    // 获取当前checkbox节点的兄弟节点下的所有的checkbox子节点选中
                    $(this).next().find(".tree_node_child_checkbox").removeAttr("checked");
                }
            });
            // 为所有的子节点添加点击事件
            $(".tree_node_child_checkbox").click(function () {
                // 获取选中的节点的父节点下的所有子节点选中的数量
                var length = $(this).parent().find(".tree_node_child_checkbox:checked").length;
                // 判断当前结点是否选中
                if($(this).prop("checked")){ // 选中
                    // 如果当前节点选中后,所有的选中节点数量1,选中父节点
                    if(length == 1){
                        // 选中父节点
                        $(this).parent().prev().prop("checked", true);
                    }
                }else{ // 节点未选中
                    if(length == 0){
                        // 取消父节点的选中状态
                        $(this).parent().prev().removeAttr("checked");
                    }
                }
            });

            // 为所有的切换按钮添加点击事件
            $(".tree_node_toggle_button").click(function () {
                // 获取需要隐藏或显示的节点
                var $toggle_node = $(this).parent().next().find(".tree_node_child");
                $toggle_node.toggle(); // 切换隐藏或显示
                // 切换按钮的显示
                if($toggle_node.is(":visible")){
                    $(this).val("-");
                }else{
                    $(this).val("+");
                }
            });
        });

 

posted @ 2017-08-07 13:12  壁虎漫步.  阅读(379)  评论(0编辑  收藏  举报