1

这是我的困境:我同时使用上下文菜单并以编程方式创建新的 jstree 节点。我遇到的问题是,当我以编程方式创建一个新的 jstree 节点时,它也会触发 contextmenu.create绑定事件。

因此,从本质上讲,由于进行了手动创建调用以及上下文菜单创建绑定,因此会发生重复。我通过在 contextmenu create 事件处理程序中放置一个if语句来部分解释这一点,以防止它在以编程方式触发事件时运行其内容。

但是,仍然会导致重复,因为无论如何都会调用上下文菜单绑定。

create有没有办法在以编程方式调用时抑制上下文菜单创建事件?

这是代码:

“创建”的上下文菜单事件处理程序:

        .bind("create.jstree", function(e, data) {
        debugger;
        // Ajax call to Server with parent node id and new node text
        if($("#RMSDoc_RequirementFlag").val() == "CONTEXT")
        {
            $.ajax({
                "type": "POST",
                "url": '@Url.Content("~/RMS/insertRMSNode")',
                "data": {
                        "ParentID" : parseInt(ParentNode),
                        "Level" : parseInt(ParentLevel),
                        "ChildNodeText" : data.rslt.obj.text()
                },
                "success": function(new_data) {
//                    $.jstree._reference($("#RequirementsTree")).refresh(-1);
                    var addedNode = data.rslt.obj;

                    $(addedNode).attr("id", "rbs_" + new_data.RMSHierarchyId);
                    $(addedNode).attr("name", "rlevel_" + new_data.Level);
                    $(addedNode).addClass("jstree-closed");
                    ParentNode = null;
                    ParentLevel = null;
                    data = null;
                    return new_data;
                }   
            });
        }

        BranchReqFLag = null;

这是以编程方式调用的create方法:

    function ReqSuccess(response) {
    // Dynamically add tree branch only (for ipad)
    if($("#RMSDoc_RequirementFlag").val() == "ADD_BRANCH_ONLY") {
        $("#RMSDoc_TreeBranch_id").val("0");
        $("#RMSDoc_TreeBranch_Text").val("");
        $("#RequirementsTree").jstree("create", null, "last", {"data" : response.TreeBranch.Text,
                                                                "state" : "closed",
                                                                "attr" : { "id" : "rbs_" + response.TreeBranch.id, "name" : "rlevel_" + response.TreeBranch.Level }
                                                                });
    }
4

0 回答 0