【问题标题】:How can I check if a node is a parent in jstree after I've clicked a button?单击按钮后,如何检查节点是否是 jstree 中的父节点?
【发布时间】:2017-06-16 12:18:19
【问题描述】:

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

所以代码看起来像

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

【问题讨论】:

    标签: javascript jquery treeview jstree


    【解决方案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)
        }
      });
    });
    

    【讨论】:

    • 很高兴它有帮助!
    【解决方案2】:

    您可以使用$(element).children().length === 0 表示它没有子节点。

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

    【讨论】:

    • 刚刚尝试过,但我仍然缺少一些东西。我的代码看起来像: if ($('.jstree-clicked').children().length === 0) { alert('haha'); }
    • 您能强调一下您认为缺少的情况吗?我可以从那里帮忙
    • 警报没有弹出意味着条件不正确。但为什么不呢?我的意思是,我选择节点,单击按钮,如果单击的节点 - .jstree-clicked - 没有子节点,它应该发出警报,但什么也没发生。
    • 在执行此操作之前可以输出 $('.jstree-clicked').length 吗?也许选择器路径不正确。您可以使用提到的代码进行验证吗?
    • 我照你说的做了。在警报($('.jstree-clicked').children().length);我被告知有 2 个孩子。所以我想我的选择器是错误的。我会考虑更多,我想你为我提供了道路,我只需要遵循它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多