2017-06-16 190 views
1

我正在创建一个按钮来删除节点后,我选择了它们。我想让它只能删除子节点。为了做到这一点,我需要检查节点是否是父节点。我点击一个按钮后,如何检查节点是否是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,所以我错过了什么?

回答

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) 
    } 
    }); 
}); 
+0

这正是我所问的。有用! – PlotTwist

+0

很高兴帮助! –

0

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

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

+0

刚刚尝试过,但我仍然失去了一些东西。我的代码看起来像:if($('。jstree-clicked')。children()。length === 0){ alert('haha'); } – PlotTwist

+0

您能否突出显示您感觉缺失的状况?我可以从那里获得帮助 – gauravmuk

+0

警报不会弹出,意味着条件不成立。但为什么不呢?我的意思是,我选择节点,我点击按钮,如果点击的节点 - .jstree点击 - 没有孩子,它应该发出警报,但没有任何反应。 – PlotTwist

相关问题