javascript - 在初始折叠 TreeView css 表

标签 javascript jquery css

我正在尝试折叠 TreeView 但无法做到这一点请帮助我您可以查看下面添加的代码片段。我希望 TreeView 最初折叠每个节点,因为它应该展开特定节点。

例如,当我运行这段代码时,它应该显示item1item5。当我点击 item1 时,它应该显示 item2item4 而不是 item3。现在你可以明白我的问题是什么了。

$(function() {
    $('#mytable').on('click', '.toggle', function () {
        //Gets all <tr>'s  of greater depth
        //below element in the table
        var findChildren = function (tr) {
            var depth = tr.data('depth');
            return tr.nextUntil($('tr').filter(function () {
                return $(this).data('depth') <= depth;
            }));
        };

        var el = $(this);
        var tr = el.closest('tr'); //Get <tr> parent of toggle button
        var children = findChildren(tr);

        //Remove already collapsed nodes from children so that we don't
        //make them visible. 
        //(Confused? Remove this code and close Item 2, close Item 1 
        //then open Item 1 again, then you will understand)
        var subnodes = children.filter('.expand');
        subnodes.each(function () {
            var subnode = $(this);
            var subnodeChildren = findChildren(subnode);
            children = children.not(subnodeChildren);
        });

        //Change icon and hide/show children
        if (tr.hasClass('collapse')) {
            tr.removeClass('collapse').addClass('expand');
            children.hide();
        } else {
            tr.removeClass('expand').addClass('collapse');
            children.show();
        }
        return children;
    });
});
table td {
    border: 1px solid #eee;
}
.level1 td:first-child {
    padding-left: 15px;
}
.level2 td:first-child {
    padding-left: 30px;
}

.collapse .toggle {
    background: url("http://mleibman.github.com/SlickGrid/images/collapse.gif");
}
.expand .toggle {
    background: url("http://mleibman.github.com/SlickGrid/images/expand.gif");
}
.toggle {
    height: 9px;
    width: 9px;
    display: inline-block;   
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<table id="mytable">
    <tr data-depth="0" class="collapse level0">
        <td><span class="toggle collapse"></span>Item 1</td>
        <td>123</td>
    </tr>
    <tr data-depth="1" class="collapse level1">
        <td><span class="toggle"></span>Item 2</td>
        <td>123</td>
    </tr>
    <tr data-depth="2" class="collapse level2">
        <td>Item 3</td>
        <td>123</td>
    </tr>
    <tr data-depth="1" class="collapse level1">
        <td>Item 4</td>
        <td>123</td>
    </tr>
    <tr data-depth="0" class="collapse collapsable level0">
        <td><span class="toggle collapse"></span>Item 5</td>
        <td>123</td>
    </tr>
    <tr data-depth="1" class="collapse collapsable level1">
        <td>Item 6</td>
        <td>123</td>
    </tr>
</table>

最佳答案

您只需要更新您的 html 并将其设置为您想要的默认模式。 请用这个替换你的html。

<table id="mytable">
    <tr data-depth="0" class="expand level0">
        <td><span class="toggle collapse"></span>Item 1</td>
        <td>123</td>
    </tr>
    <tr data-depth="1" class="collapse level1" style="display: none;">
        <td><span class="toggle"></span>Item 2</td>
        <td>123</td>
    </tr>
    <tr data-depth="2" class="collapse level2" style="display: none;">
        <td>Item 3</td>
        <td>123</td>
    </tr>
    <tr data-depth="1" class="collapse level1" style="display: none;">
        <td>Item 4</td>
        <td>123</td>
    </tr>
    <tr data-depth="0" class="expand collapsable level0">
        <td><span class="toggle collapse"></span>Item 5</td>
        <td>123</td>
    </tr>
    <tr data-depth="1" class="collapse collapsable level1" style="display: none;">
        <td>Item 6</td>
        <td>123</td>
    </tr>
</table>

关于javascript - 在初始折叠 TreeView css 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48982189/

相关文章:

javascript - 使用 d3.js 以 3x3 格式绘制多个圆圈

javascript - 我想隐藏树状网格(带列的树面板)中非叶节点上的复选框

html - 将可能包裹的单个 block 居中

javascript - 有没有办法将 Javascript 对象附加到选择选项

javascript - jscript + jquery + 一个例子的基本区别

javascript - Sketch.js - 画笔从鼠标指针下方开始

javascript - 当我点击任何 div 时,只有那个 div 必须出现并且页面的所有内容都应该重叠

javascript - 如何使用动画导航到页面的某个部分?

css - 可能的 Chrome li 宽度渲染问题

php - Json数据展示——css、html