javascript - 始终触发 jstree 事件

标签 javascript jquery tree jstree

我有一个树结构,其中所有树节点都是父文件夹和子文件夹。我想显示用户尝试扩展的文件夹中的文件。因此,用户展开一个节点,它会在另一个 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”仅在节点有子节点时触发。否则不会触发。我想在节点展开时触发一个事件。

请给出解决方案

最佳答案

终于我找到了解决这个问题的办法。无论是否包含子节点,事件“load_node.jstree”始终会触发。

$("#treedisp").jstree().on('load_node.jstree', function (e, data) {
                    var folderId = data.node.id;
                    getFolderFiles(folderId, userOrOrgProfId, filesDispDiv);
                })

关于javascript - 始终触发 jstree 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35810370/

相关文章:

使用无序/可选参数的 jQuery 方法

javascript - PHP 只显示一行原因

jquery - 带有预览的缩放图像上的 imgareaselect 无法正常工作

python - "nicely"如何打印出一棵没有节点信息的树

javascript - csv数据到d3中的嵌套json树

javascript - 即使聚焦并且 CSS 规则生效,HTML 按钮也不会单击

javascript - 背景图像与滚动内容一起移动

tree - 在折叠树的 Typed Racket 中转换到任意类型

javascript - 在 Javascript 中提交数据

javascript - 基于概率的变体选择