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

时间:2014-05-15 10:48:58

标签: javascript jquery

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

详细信息:请只检查两个节点“ca”,“cb”。如果他们放在“a”上,他们就会成为“a”的孩子。但是如果他们放在“b”上他们不能放弃并回到原来的位置。但如果他们落在“ba”上,他们就可以成为“ba”的孩子。

这可能吗?我确实检查过API here,但没有人这样做。

小提琴link

$('#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"]
 });

1 个答案:

答案 0 :(得分:1)

在这里(再次)

//we'll call the node having `not` in its id, a "n_node"
$('#tree').jstree({
    core: {
       check_callback: function (op, node, node_parent) {
          var ret = true;
          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;
          }
          return ret;
       }
    },
    dnd: {
       check_while_dragging: false
    },
    "plugins": ["dnd"]
 });

更新

代表jsfiddle.net/fuu94/127 in this fiddle user can add node "a" , "b","b-a","b-b","b-b-a","b-b-b" inside "c-a","c-b".can we restrict them

//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);
}

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