始终触发 jstree 事件
Trigger jstree event always
我有一个树结构,其中所有树节点都是父文件夹和子文件夹。我想显示用户尝试展开的文件夹中的文件。所以用户用户展开一个节点,它显示子节点(子文件夹)和来自另一个 div.
中父节点的文件
我正在使用 "open_node.jstree" 事件来加载其他一些脚本。但是 "open_node.jstree" 如果节点没有子节点则不会触发。无论节点是否有子节点,我都想在扩展节点时触发一个事件。
我的代码如下
var dispJSTree = function () {
$("#treedisp").jstree({
'core': {
'data': {
"type": "POST",
"dataType": "json",
"contentType": "application/json;",
"url": "/xyz/example.asmx/GetJsFoldersTree",
"data": function (node) {
var nodeid = (node.id == "#") ? "" : node.id;
var originalSrc = node.original;
var moduleId = "";
if (typeof (originalSrc) === 'undefined' || originalSrc == null || originalSrc == "") {
nodeid = "";
}
else {
nodeid = (typeof (originalSrc.nodeid) === 'undefined' || originalSrc.nodeid == null || originalSrc.nodeid == "") ? "" : originalSrc.nodeid;
moduleId = (typeof (originalSrc.moduleId) === 'undefined' || originalSrc.moduleId == null || originalSrc.moduleId == "") ? "" : originalSrc.moduleId;
}
return JSON.stringify({ id: nodeid, moduleId: moduleId });
}
}
},
'plugins': ['contextmenu'],
'contextmenu': {
'items': customMenu
},
}).on('open_node.jstree', function (e, data) {
var folderId = data.node.original.id;
var moduleId = data.node.original.moduleId;
getFiles(folderId, moduleId, filesDispDiv);
});
}
我唯一担心的是 "open_node.jstree" 只有节点有子节点才会被触发。否则不触发。如果节点展开,我想触发一个事件。
请给出解决方案
对于这种情况,我会处理点击事件
$("#mytree").on("click", ".jstree-anchor", function(e) {
var obj = $("#mytreet").jstree(true).get_node($(this));
});
您不能使用 obj.id 访问您点击的节点 ID 并且...
终于找到了解决办法。无论是否包含子节点,事件 "load_node.jstree" 总是触发。
$("#treedisp").jstree().on('load_node.jstree', function (e, data) {
var folderId = data.node.id;
getFolderFiles(folderId, userOrOrgProfId, filesDispDiv);
})
我有一个树结构,其中所有树节点都是父文件夹和子文件夹。我想显示用户尝试展开的文件夹中的文件。所以用户用户展开一个节点,它显示子节点(子文件夹)和来自另一个 div.
中父节点的文件我正在使用 "open_node.jstree" 事件来加载其他一些脚本。但是 "open_node.jstree" 如果节点没有子节点则不会触发。无论节点是否有子节点,我都想在扩展节点时触发一个事件。
我的代码如下
var dispJSTree = function () {
$("#treedisp").jstree({
'core': {
'data': {
"type": "POST",
"dataType": "json",
"contentType": "application/json;",
"url": "/xyz/example.asmx/GetJsFoldersTree",
"data": function (node) {
var nodeid = (node.id == "#") ? "" : node.id;
var originalSrc = node.original;
var moduleId = "";
if (typeof (originalSrc) === 'undefined' || originalSrc == null || originalSrc == "") {
nodeid = "";
}
else {
nodeid = (typeof (originalSrc.nodeid) === 'undefined' || originalSrc.nodeid == null || originalSrc.nodeid == "") ? "" : originalSrc.nodeid;
moduleId = (typeof (originalSrc.moduleId) === 'undefined' || originalSrc.moduleId == null || originalSrc.moduleId == "") ? "" : originalSrc.moduleId;
}
return JSON.stringify({ id: nodeid, moduleId: moduleId });
}
}
},
'plugins': ['contextmenu'],
'contextmenu': {
'items': customMenu
},
}).on('open_node.jstree', function (e, data) {
var folderId = data.node.original.id;
var moduleId = data.node.original.moduleId;
getFiles(folderId, moduleId, filesDispDiv);
});
}
我唯一担心的是 "open_node.jstree" 只有节点有子节点才会被触发。否则不触发。如果节点展开,我想触发一个事件。
请给出解决方案
对于这种情况,我会处理点击事件
$("#mytree").on("click", ".jstree-anchor", function(e) {
var obj = $("#mytreet").jstree(true).get_node($(this));
});
您不能使用 obj.id 访问您点击的节点 ID 并且...
终于找到了解决办法。无论是否包含子节点,事件 "load_node.jstree" 总是触发。
$("#treedisp").jstree().on('load_node.jstree', function (e, data) {
var folderId = data.node.id;
getFolderFiles(folderId, userOrOrgProfId, filesDispDiv);
})