在点击按钮后,如何检查节点是否为jstree中的父节点?

时间:2017-06-16 12:18:20

标签: javascript jquery treeview jstree

我选择它们后创建一个删除节点的按钮。我想让它只能删除子节点。为了做到这一点,我需要检查节点是否是父节点。

所以代码看起来像

$(".delete-node").click(function() {
    // gets the selected nodes
    $('#jstree1').jstree(true).get_selected(); 

    if (data.instance.is_leaf) { 
        //My problem is HERE. Only delete if all nodes are children/not parent
        //here I delete the nodes selected
        $('#jstree1').jstree(true)
                     .delete_node($('#jstree1')
                     .jstree(true)
                     .get_selected()); 
    }
});         

我知道这很简单,但我似乎无法将其付诸实践。我是jQuery和JavaScript的新手,所以我错过了什么?

2 个答案:

答案 0 :(得分:1)

您需要通过id获取节点,然后检查它是否是父节点。请参阅下面的代码。查看演示 - Codepen Demo

$('#jstree1')
  .jstree({
    core: {
      data: treeData,
      check_callback: true  // don't forget to set this param to true
    }
  });

$(".delete-node").click(function() {
  var tree = $('#jstree1').jstree();
  // gets the selected nodes
  var selectedNodeIds = tree.get_selected();
  selectedNodeIds.forEach(function(nodeId) {
    var node = tree.get_node(nodeId);
    if (!tree.is_parent(node)) {
      tree.delete_node(node)
    }
  });
});

答案 1 :(得分:-1)

您可以执行$(element).children().length === 0,这意味着它没有子节点。

要删除所有子节点,$(element).children().remove()将删除所有子节点。