我选择它们后创建一个删除节点的按钮。我想让它只能删除子节点。为了做到这一点,我需要检查节点是否是父节点。
所以代码看起来像
$(".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的新手,所以我错过了什么?
答案 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()
将删除所有子节点。