jsTree drag_check不起作用

时间:2013-01-17 13:05:32

标签: javascript jquery drag-and-drop treeview jstree

我有一个使用dnd插件的jsTree,允许拖放树项以改变它们的位置。但是我注意到索引是错误的,这取决于你是否在一个对象之前或之后放下该项目,并且在谷歌搜索了几个小时后如何修复索引问题,我得出的结论是,更容易禁用之后除非它是子集的最后一个树节点

我使用以下代码来调用配置dnd插件:

    'dnd': {
        'drop_finish': function (data) {
            alert("hi");
        },
        'drag_check': function (data) {
            alert('hi1');
            if (data.r.attr('id') == 'RootNode') {
                return false;
            } else if (data.r.hasClass('jstree-last')) {
                return {
                    after: true,
                    before: true,
                    inside: true
                };
            } else {
                return {
                    after: false,
                    before: true,
                    inside: true
                };
            }
        }
    }

然而,hi1永远不会收到警报(但hi在我放弃项目后会这样做)所以我仍然可以放弃元素。我已经尝试了解如何调用拖动检查并尝试了许多内容,例如添加jstree-drop类以及本网站上建议的其他内容但我无法获得hi1被警告。

在解决此问题时,我们将不胜感激任何帮助

由于

1 个答案:

答案 0 :(得分:1)

看起来“dnd”插件用于外部拖放。 您可以使用check_move来阻止移动到节点中的最后一个位置:

"crrm": {
    "move": {
        "check_move": function(m) {
        var length = $(m.np).find("ul:first > li").length,
            afterLast = length == m.cp;
        if (length > 0 && afterLast) {
            return false;
        }
        return true;                            
     }
 }