2

我有两个 Dyna 发辫。想要在树内拖放而不是在发束之间。请指导我如何禁用发束之间的拖放。

        $("#tree1")
        .dynatree(
                {
                    onActivate : function(node) {
                        alert("You activated " + node.data.title);
                    },
                    persist : true,
                    dnd : {
                        onDragStart : function(node) {
                            logMsg("tree.onDragStart(%o)", node);
                            return true;
                        },
                        onDragStop : function(node) { 
                            logMsg("tree.onDragStop(%o)", node);
                        },
                        autoExpandMS : 1000,
                        preventVoidMoves : true,

                        onDragEnter : function(node, sourceNode) {

                            logMsg("tree.onDragEnter(%o, %o)", node,
                                    sourceNode);
                            return true;
                        },
                        onDragOver : function(node, sourceNode, hitMode) {

                            logMsg("tree.onDragOver(%o, %o, %o)", node,
                                    sourceNode, hitMode);

                            if (node.isDescendantOf(sourceNode)) {
                                return false;
                            }

                            if (!node.data.isFolder && hitMode === "over") {
                                return "after";
                            }
                        },
                        onDrop : function(node, sourceNode, hitMode, ui,
                                draggable) {

                            logMsg("tree.onDrop(%o, %o, %s)", node,
                                    sourceNode, hitMode);
                            sourceNode.move(node, hitMode);

                        },
                        onDragLeave : function(node, sourceNode) {

                            logMsg("tree.onDragLeave(%o, %o)", node,
                                    sourceNode);
                        }
                    },
                    children : [ 

                    {
                        title : "Public",
                        isFolder : true,
                        children : [ {
                            "title" : "Item 1"
                        }, {
                            "title" : "Folder 2",
                            "isFolder" : true,
                            "key" : "folder2",
                            "children" : [ {
                                "title" : "Sub-item 2.1",
                                "isFolder" : false
                            }, {
                                "title" : "Sub-item 2.2"
                            } ]
                        }, {
                            "title" : "Folder 3",
                            "isFolder" : true,
                            "key" : "folder3",
                            "children" : [ {
                                "title" : "Sub-item 3.1",
                                "isFolder" : false
                            }, {
                                "title" : "Sub-item 3.2",
                                "isFolder" : false
                            } ]
                        }, {
                            "title" : "Item 5"
                        } ]
                    } ]

                });

Tree2 是

        $("#tree2")
        .dynatree(
                {
                    onActivate : function(node) {
                        alert("You activated " + node.data.title);
                    },
                    persist : true,
                    dnd : {
                        onDragStart : function(node) {
                            logMsg("tree.onDragStart(%o)", node);
                            return true;
                        },
                        onDragStop : function(node) { 
                            logMsg("tree.onDragStop(%o)", node);
                        },
                        autoExpandMS : 1000,
                        preventVoidMoves : true,

                        onDragEnter : function(node, sourceNode) {

                            logMsg("tree.onDragEnter(%o, %o)", node,
                                    sourceNode);
                            return true;
                        },
                        onDragOver : function(node, sourceNode, hitMode) {

                            logMsg("tree.onDragOver(%o, %o, %o)", node,
                                    sourceNode, hitMode);

                            if (node.isDescendantOf(sourceNode)) {
                                return false;
                            }

                            if (!node.data.isFolder && hitMode === "over") {
                                return "after";
                            }
                        },
                        onDrop : function(node, sourceNode, hitMode, ui,
                                draggable) {

                            logMsg("tree.onDrop(%o, %o, %s)", node,
                                    sourceNode, hitMode);
                            sourceNode.move(node, hitMode);

                        },
                        onDragLeave : function(node, sourceNode) {

                            logMsg("tree.onDragLeave(%o, %o)", node,
                                    sourceNode);
                        }
                    },
                    children : [ 

                    {
                        title : "Public",
                        isFolder : true,
                        children : [ {
                            "title" : "Item 1"
                        }, {
                            "title" : "Folder 2",
                            "isFolder" : true,
                            "key" : "folder2",
                            "children" : [ {
                                "title" : "Sub-item 2.1",
                                "isFolder" : false
                            }, {
                                "title" : "Sub-item 2.2"
                            } ]
                        }, {
                            "title" : "Folder 3",
                            "isFolder" : true,
                            "key" : "folder3",
                            "children" : [ {
                                "title" : "Sub-item 3.1",
                                "isFolder" : false
                            }, {
                                "title" : "Sub-item 3.2",
                                "isFolder" : false
                            } ]
                        }, {
                            "title" : "Item 5"
                        } ]
                    } ]

                });

请指导我如何实现 Tree1 节点可以在我的 Tree1 中进行 DnD 并且 Trre2 节点可以在 Tree2 中进行 DnD。并限制 Tree1 节点不应在 Tree2 中删除,反之亦然。

4

1 回答 1

0

你应该使用:

onDragEnter: function (targetNode, sourceNode) {
    // Prevent dropping a node from a foreign tree
    if (targetNode.tree !== sourceNode.tree) {
        return false;
    }
    return true;
}

它检查要移动的节点的树 (sourceNode) 是否与要移动的节点的树 (targetNode) 相同。如果两棵树不相同,则可以防止丢弃。

于 2016-09-16T10:28:26.517 回答