javascript - 当节点在 jstree 中关闭时,有什么方法可以防止调用 "select_node.jstree"?

标签 javascript jquery events jstree

当你打开节点时,没问题。不调用“select_node.jstree”。但是,当您选择一个节点然后关闭其父节点时,jstree 会出于某种奇怪的原因为该父节点触发“select_node.jstree”。有没有办法解决这个问题,或者这只是 jstree 的一个缺陷?我很感激你的帮助!这是我的代码:

        $("#RequirementsTree")
    .bind("select_node.jstree", function(event, data) {
            ReqNode = data.rslt.obj;
            $("#req_tree_modal").dialog({ height: 400, width: 600, modal: true, closeOnEscape: true, resizable: false, show: "blind" });
            $("#RMSDoc_ParentNodeID").val(data.rslt.obj.attr("id").substring(4));
            if(is_requirement_node(data))
            {
                dispEditRequirementView();

                var ReqCheck = data.rslt.obj.attr("name");

                @* This is a REQUIREMENT *@
                if(ReqCheck == "requirement")
                {
                    // Ajax call to Server with requirement id passed in
                    $.ajax({
                        type: "POST",
                        url: '@Url.Content("~/RMS/getRequirementStateByID")',
                        data: {
                            ReqID : data.rslt.obj.attr("id").substring(4)
                        },
                        success: function(new_data) {
                            if(new_data == 1){
                                $("#RMSDoc_ReqEnabled").attr("checked", "checked");
                                $("#RMSDoc_ReqEnabled").val("true");
                            }
                            else if(new_data == 0) {
                                $("#RMSDoc_ReqEnabled").removeAttr("checked");
                                $("#RMSDoc_ReqEnabled").val("false");
                            }
                        }   
                    });

                    $("#RMSDoc_RBSRequirement_RequirementsId").val(data.rslt.obj.attr("id").substring(4));
                    $("#RMSDoc_RBSRequirement_RequirementsText").val($.trim(data.rslt.obj.text()));
                    $("#ExistingTreeSubmit").val("@Model.RMSDoc.RMSEditReqButton.ConfigurableLabelDesc");

                }
                else {
                    alert("Requirement node select error");
                }
            }
            @* This is a TREE BRANCH *@
            else
            {
                dispAddRequirementView();
                $("#RMSDoc_TreeBranch_Text").val($.trim($('.jstree-clicked').text()));
                $("#RMSDoc_TreeBranch_id").val(data.rslt.obj.attr("id").substring(4));
                $("#RMSDoc_TreeBranch_Level").val(data.rslt.obj.attr("name").substring(7));
                $("#RMSDoc_RBSRequirement_RequirementsText").val("");
                $("#ExistingTreeSubmit").val("@Model.RMSDoc.RMSCreateReqButton.ConfigurableLabelDesc");
            }
     })

最佳答案

更新: 我找到了一种让它在插件中工作的方法,将以下内容添加到“ui”配置部分:

        "ui": {
            "select_limit": 1,
            "selected_parent_close":false
        },

我相信发生的事情是当一个子节点被选中时,折叠父节点会导致父节点被选中,从而触发事件。

------------原始答案--------------------

我不确定插件范围内的答案。但我确实找到了解决方法。

我给树“an”里面​​的每一个anchor()标签都加了一个类。

<li class='jstree-closed' id="phtml_3" rel="folder">
    <a href="#" class="an">test node 2</a>
</li>

然后我连接 JQuery 以使用此类查找 anchor ,并以这种方式处理我的点击。

instance.on("click", "a.an", function (e) {
    alert("click");
});

我仍然需要添加代码来从父容器中找到 ID,这不是最优的...但我不必再为点击而与崩溃竞争。

关于javascript - 当节点在 jstree 中关闭时,有什么方法可以防止调用 "select_node.jstree"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12674789/

相关文章:

javascript - 使用 JavaScript 显示鼠标 x 和 y 位置

javascript - <img> onload 处理程序无法针对 dataURI 触发

javascript - 如何在拖动时更改可排序元素的样式?

c# - Wpf 鼠标事件超出用户控件问题的范围

android - mediaPlayer 停止时触发事件

javascript - 为什么这段用于制作动画并聚焦于一张图片的 JavaScript 代码不起作用?

javascript - 为什么在 Chrome 上 id = 'OnClick' 时以下嵌入的 "pattern"不起作用?

javascript - 基于 CheckBox 启用或禁用按钮

javascript - 为同名的多个类抓取浮点值

reactjs - 如何在react中监听localstorage值的变化?