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

How can I check if a node is a parent in jstree after I've clicked a button?

我正在创建一个按钮,用于在我选择节点后将其删除。我想让它只能删除子节点。为此,我需要检查节点是否是父节点。

所以代码看起来像

$(".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 有点陌生,所以我错过了什么?

你可以做 $(element).children().length === 0 这意味着它没有子节点。

在这种情况下删除所有子节点$(element).children().remove()将删除所有子节点。

您需要通过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)
    }
  });
});