JSTree防止来自班级

时间:2015-07-17 15:42:35

标签: javascript jquery jstree jstree-dnd

下午 我在使用JSTree 3.0时遇到了一些问题。我想做的是在页面加载时阻止使用dnd插件拖动所有节点。然后,我希望能够单击编辑按钮以在所有节点上启用拖放功能。我认为实现这一目标的最佳方法是在所有节点上设置一个类,并在它包含此类时阻止拖动。单击编辑时,将删除该类。

我找到了一种使用data.node.li_attr.class在move_node上获取节点类的方法。这会返回类,但我无法弄清楚如何停止拖动操作。到目前为止,请参阅以下代码:

$tree.on("move_node.jstree", function(e, data){
            var NodeClass = data.node.li_attr.class;
            if(NodeClass == "noMove")
            {
                $.jstree.defaults.dnd_is_draggable(false);
            }else{
                $tree.jstree("open_all");
                var nodeId = data.node.id;
                var nodeParent = data.parent;
                var level = data.node.parents.length;
                getChildren(data.node.id, level);
                var url = window.location.origin + window.location.pathname.replace(regexp, "/ajaxSaveCaseFamily");

                $.ajax({
                    type:"POST",
                    url:url,
                    data:{
                        "_token":token,
                        "nodeId":nodeId,
                        "nodeParent":nodeParent,
                        "depth":level
                    },
                    success:function(data){
                        var query = data;
                        if(query.RESULT == "FAIL"){
                            $("#errMsg").html(query.REASON);
                        }
                    }
                })
            }
        });

非常感谢任何帮助!

提前致谢!!

1 个答案:

答案 0 :(得分:1)

你正在接近这个错误 - 当事件被触发时拖动已经开始 - 有一个函数被调用以确定节点是否可拖动(甚至在拖动开始之前):
http://www.jstree.com/api/#/?q=is_dra&f= $。jstree.defaults.dnd.is_draggable

以下是如何使用它的示例:

var is_dragging_allowed = false;
$('#edit_button').on('click', function () {
  is_dragging_allowed = true;
});
$('#tree').jstree({
  dnd : {
    is_draggable : function () {
      return is_dragging_allowed;
    }, ...