3

ノードを開くと、問題ありません。「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");
            }
     })
4

1 に答える 1

1

更新: プラグイン内で動作させる方法を見つけたので、「ui」構成セクションに以下を追加します。

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

サブノードが選択されたときに、親ノードを折りたたむと親ノードが選択され、イベントがトリガーされたことが起こっていたと思います。

---------- 元の回答 ----------

プラグインの範囲内で機能する答えについてはわかりません。しかし、私は回避策を見つけました。

ツリー "an" 内の各アンカー () タグにクラスを追加しました。

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

次に、このクラスでアンカーを探すように JQuery を配線し、その方法でクリックを処理しました。

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

親コンテナーから ID を見つけるためのコードを追加する必要がありますが、最適ではありません...しかし、クリックのために折りたたみと競合する必要はもうありません。

于 2013-02-14T20:18:44.263 に答える