单击按钮后如何检查节点是否是 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)
}
});
});
我正在创建一个按钮,用于在我选择节点后将其删除。我想让它只能删除子节点。为此,我需要检查节点是否是父节点。
所以代码看起来像
$(".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)
}
});
});