1

Bootstrap 树视图中的节点只能使用 + & - 前缀折叠/展开。我知道点击事件是为了不那么平凡的事情而保存的。我们确实使用点击事件将有关叶子的信息发送到页面的另一部分。

但我的客户正是想要这个:点击 li 元素时折叠和展开。事实上,这更加用户友好和直观。

我在GitHub 上找到了“expandNode”和“collapseNode”方法。

$('#tree').treeview('expandNode', [nodeId, {
  levels: 2,
  silent: true
}]);
$('#tree').treeview('collapseNode', [nodeId, {
  silent: true,
  ignoreChildren: false
}]);

现在我想直接从事件 onNodeSelected 中调用它们,如下所示:

$('#treeview').treeview({
  data: data,
  multiSelect: true,
  highlightSelected: false,
  onNodeSelected: function(event, node) {
    if (node.nodes == undefined) {
      // sends node info to another element
    } else if (node.state.expanded) {
      // TODO collapse children 
      collapseNode(node.nodeId);
    } else {
      // TODO expand children 
      expandNode(node.nodeId);
    }
  }
});

function collapseNode(nodeId) {
  $('#tree').treeview('collapseNode', [nodeId]);
  alert("collapse " + nodeId);
}

function expandNode(nodeId) {
  $('#tree').treeview('expandNode', [nodeId]);
  alert("expand " + nodeId);
}

警报被触发并显示正确的节点 ID。但是节点没有展开(或折叠)。我想念什么?

4

1 回答 1

1

您在函数中选择了错误的树视图。尝试将它们更新为以下内容:

function collapseNode(nodeId) {
  $('#treeview').treeview('collapseNode', [nodeId]);
  alert("collapse " + nodeId);
}

function expandNode(nodeId) {
  $('#treeview').treeview('expandNode', [nodeId]);
  alert("expand " + nodeId);
}
于 2017-08-25T08:53:42.780 回答