【发布时间】:2011-09-19 07:38:40
【问题描述】:
我已经在我的项目上实施了 JSTREE 一切正常,但最近我遇到了一个问题,即使我设法解决了它的概念,我仍然不清楚。
这里是什么意思?
JSTREE 代码写在jquery 文档准备函数 像这样
$(document).ready(function() { $("#someid").jstree( { "json_data" : { "data" : [{ "attr" : { "id" : "root" }, "data" : { "title" : "Root", "attr" : { "id" : "root","href" : "#" ,"class" : "jstree-clicked" } }, "children" : [ { "attr" : {"id" : "node-1"}, "data" : { "title" : "Node-1", "attr" : {"id" : "node-1" ,"href": "#" } }, "children": [ ], "state" : "closed" }, { "attr" : {"id" : "node-2"}, "data" : { "title" : "Node-2", "attr" : {"id" : "node-2" ,"href": "#" } }, "children": [ ], "state" : "closed" }, { "attr" : {"id" : "node-3"}, "data" : { "title" : "Node-3", "attr" : {"id" : "node-3" ,"href": "#" } }, "children": [ ], "state" : "closed" }, { "attr" : {"id" : "node-4"}, "data" : { "title" : "Node-4", "attr" : {"id" : "node-4" ,"href": "#" } }, "children": [ ], "state" : "closed" }, { "attr" : {"id" : "node-5"}, "data" : { "title" : "Node-5", "attr" : {"id" : "node-5" ,"href": "#" } }, "children": [ ], "state" : "closed" } ], // the method where the ajax request will be sent to get thejson data to build the tree "ajax" : { "url" : "/my_url/tree", "data" : function (focus_element) { return { node : focus_element.attr ? focus_element.attr("id") : 0 }; } } }, "themes" : { "theme" : "classic", "dots" : true, "icons" : true }, "plugins" : ["themes", "json_data" ,"ui"] })
页面上有一个准备好另一个jquery文档功能将点击锚节点创建但上面的jstree。
$(document).ready(function() {
$("a#node-1").click()})
现在问题来了,当页面加载时,树全部被构建 树已构建,但 node-1 锚链接没有被点击。
调试它我发现 console.log 总是向我显示 a#node-1 的空数组,这很奇怪。
我在第二个 document.ready 函数中放了 alert 框 以查看在我请求节点时是否构建了树。像这样
$(document).ready(function() {
alert("JSTREE SHOULD BE CREATED BY NOW"); $("a#node-1").click()})
但令我惊讶的是,当 警报弹出时,JSTREE 仍在构建树。
通过对 javascript 的一些了解,我知道页面上的脚本标签本质上是同步的,即页面上的第二个脚本仅在第一个执行时执行
这让我相信 JSTREE 是异步运行的。如果是,请任何人分享一些关于它的信息。
顺便说一句,我设法使用 jstree 负载处理程序
实现了同样的目的$("#someid").bind("loaded.jstree",
function() { $("a#node-1").click(); })
【问题讨论】:
标签: javascript jstree