0

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

我正在使用以下代码来调用配置 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警报。

任何帮助将不胜感激解决这个问题

谢谢

4

1 回答 1

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;                            
     }
 }
于 2013-03-20T10:59:02.130 回答