Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我们可以在删除父节点之前复制节点吗?_Javascript_Jquery - Fatal编程技术网

Javascript 我们可以在删除父节点之前复制节点吗?

Javascript 我们可以在删除父节点之前复制节点吗?,javascript,jquery,Javascript,Jquery,我想将某些节点限制为添加到父节点中。我想在删除节点之前检查一个条件,如果节点有(被删除的对象)子节点,它将不会删除,否则如果它没有子节点,它将删除。我想我需要使用复制的概念 详细信息:请只检查两个节点“c-a”、“c-b”。如果它们落在“a”上,它们将成为“a”的子节点。但是如果它们落在“b”上,它们就不能落回原来的位置。但是如果它们落在“b-a”上,它们可以成为“b-a”的子节点 这可能吗?我确实检查了可用的API,但没有人这样工作 小提琴: $('#tree').jstree({ c

我想将某些节点限制为添加到父节点中。我想在删除节点之前检查一个条件,如果节点有(被删除的对象)子节点,它将不会删除,否则如果它没有子节点,它将删除。我想我需要使用复制的概念

详细信息:请只检查两个节点“c-a”、“c-b”。如果它们落在“a”上,它们将成为“a”的子节点。但是如果它们落在“b”上,它们就不能落回原来的位置。但是如果它们落在“b-a”上,它们可以成为“b-a”的子节点

这可能吗?我确实检查了可用的API,但没有人这样工作

小提琴:

$('#tree').jstree({
    core: {
       check_callback: function (op, node, node_parent) {
          console.log(op);
           console.log(node)
           console.log(node_parent.id)
          return op == 'move_node' ? node_parent.id.indexOf('not') === -1 : true;
       }
    },
    dnd: {
       is_draggable: function (x) {
          return x[0].id.indexOf('not') === -1;
       }
    },
    "plugins": ["dnd"]
 });
给你(再来一次)

更新

对于
jsfiddle.net/fuu94/127,用户可以在“c-a”、“c-b”中添加节点“a”、“b”、“b-a”、“b-b-a”、“b-b-b”。我们可以限制它们吗

//function to check n_node in one place
function isNNode(node) {return node.id.indexOf('not') !== -1;}  
并替换你的状况

if (op == 'move_node' && node.id.indexOf('not') !== -1) {
    //n_node can only be dropped in an empty non-n_node
    ret = node_parent.id.indexOf('not') === -1 && !node_parent.children.length;
}
有以下几点

if (op == 'move_node') {
    ret = isNNode(node) ? !isNNode(node_parent) && !node_parent.children.length : !isNNode(node_parent);
}

我希望您的所有问题现在都得到解决。

提供一把小提琴,以便更好地说明。@ejay您能提供吗fiddle@ejay谢谢你的帮助,我还需要一个帮助。用户可以在“c-a”,“c-b”中添加节点“a”,“b”,“b-b”,“b-b-a”,“b-b-b”.我们可以限制他们吗?@ejay你能看看我的最后一个问题吗?之后我不会再问了
if (op == 'move_node') {
    ret = isNNode(node) ? !isNNode(node_parent) && !node_parent.children.length : !isNNode(node_parent);
}