如何通过一个按钮切换展开/折叠行为?

时间:2018-01-03 07:59:17

标签: javascript jquery jquery-nestable

我使用Nestable插件来创建树结构。我想要切换按钮来展开/折叠。

要展开我添加:

$('#tree').nestable('expandAll');

要折叠我添加:

$('#tree').nestable('collapseAll');

但是我用2个不同的按钮单独做了。如何通过一个按钮切换展开/折叠行为?

HTML:

<div id="tree" class="dd">
    <ol class="dd-list">
        <li class="dd-item" data-id="1">
            <div class="dd-handle">Item 1</div>
        </li>
        <li class="dd-item" data-id="2">
            <div class="dd-handle">Item 2</div>
        </li>
        <li class="dd-item" data-id="3">
            <div class="dd-handle">Item 3</div>
            <ol class="dd-list">
                <li class="dd-item" data-id="4">
                    <div class="dd-handle">Item 4</div>
                </li>
                <li class="dd-item" data-id="5">
                    <div class="dd-handle">Item 5</div>
                </li>
            </ol>
        </li>
    </ol>
</div>

3 个答案:

答案 0 :(得分:2)

在这两个function之间切换:

var click = false;
  function callFunction(el) {
    if (!click) {
     //$('#tree').nestable('expandAll');
     console.log('expandAll');
      click = true;
    } else {
      //$('#tree').nestable('collapseAll');
      click = false;
      console.log('collapseAll');
    }
  }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button onclick="callFunction(this)">Toggle</button>

答案 1 :(得分:1)

你可以在按钮上添加一个事件来检查按钮的动作

   $('#tree').on('click', 'button', function(e){
    $(e.target).data('action') == 'expand-all' ? $(e.target).data('action', 'collapse-all') : $(e.target).data('action', 'expand-all')
})

答案 2 :(得分:0)

尝试使用

$('#tree').nestable();

自动切换

这是我尝试https://codepen.io/anon/pen/goxpKv

的链接