これが私のジレンマです。コンテキストメニューとプログラムによる新しい jstree ノードの作成の両方を使用しています。私が遭遇した問題は、プログラムで新しい jstree ノードを作成すると、contextmenu .create
bind イベントも発生することです。
したがって、本質的に、手動の create 呼び出しと contextmenu create bind が行われるため、重複が発生します。これは、コンテキストメニューの作成イベント ハンドラー内にifステートメントを配置して、イベントがプログラムによってトリガーされた場合にコンテンツが実行されないようにすることで部分的に説明しました。
ただし、contextmenu バウンドは何があっても常に呼び出されるため、重複は依然として発生します。
プログラムで呼び出されるたびに contextmenu create イベントを抑制する方法はあり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 }
});
}