我在javascript中动态创建按钮,并且每个按钮都应该在jsTree中选择其对应的节点。 问题在于所有按钮都选择了它们各自分支中的最后一个节点。 jsTree可以按照预期的方式工作,所以这不是问题。 相关代码:

        var children = node.children;
        for (var i = 0; i < children.length; i++) {
            var childNode = myTree.get_node(children[i]);
            var myButton = document.createElement("div");

            myButton.className = 'imageButton';

                myButton.onclick = function () {
                    myTree.deselect_all([true]);
                    myTree.select_node(childNode);
                };

当我构建按钮时,childNode是正确的节点。

问题是当onClick触发时,childNode是children []中的最后一个元素。 然后选择哪个。

有什么建议么?

#1楼 票数:0

我认为问题出在封闭方面 该链接对此进行了很好的解释。 无论如何,我会尝试这样做,看看会发生什么:

function clickEvHandlerClosure(childnode) {
    return function () {
        myTree.deselect_all([true]);
        myTree.select_node(childnode);
    };
}

// your code
....

// In the loop, replace this:
//myButton.onclick = function () {
//                myTree.deselect_all([true]);
//                myTree.select_node(childNode);
//            };
// for this:
myButton.onclick = clickEvHandlerClosure(childnode);

可以的。

#2楼 票数:0 已采纳

我使用了绑定功能使其工作。

     myButton.onclick = function (index) {
                var myTree = $('#jstree').jstree();
                var node = myTree.get_selected(true)[0];
                var children = node.children;
                var childNode = myTree.get_node(children[index]);
                    myTree.deselect_all([true]);
                    myTree.select_node(childNode);
                }.bind(this, i);

  ask by Sean Fleming translate from so

未解决问题?本站智能推荐:

2回复

jstree设置节点href链接并添加onclick事件

我是jQuery和jsTree的新手,我正在尝试完成两件事。 1)我希望节点在单击时转到指定的URL。 默认情况下, li有a标签,其中href=# 。 2)我想添加一个onClick事件到某些节点。 我进行了搜索,但似乎无法获得明确的答案。 我尝试了以下操作: 对于数据填充,
1回复

jsTree通过按钮创建节点

我尝试创建节点时遇到了一些麻烦。 从上下文菜单中,一切都OK,但是当我从按钮调用create event时,我没有AJAX请求。 看: 现在,当我从上下文菜单调用时,可以看到创建字符串,下一个AJAX请求以及最后的字符串结尾,但是当我单击按钮时, 仅看到字符串创建 ,仅此而已。
1回复

如何分别使用复选框已选中,未选中和select_node事件

我正在使用JSTree并正在处理必须对节点的选中,未选中和选择事件执行不同操作的场景。 “ select_node”工作正常,因为我只需要那里的节点详细信息,但是我需要在check_node和uncheck_node事件上检查节点的正确列表。 check_node如果选择了root及其所
1回复

jstree节点未创建

我创建了一个非常简单的jstree。 单击链接后,我正在调用createNode()函数。 它确实使用api中的create函数来创建节点。 这似乎是我面临的一个常见的jquery问题。 请让我知道出了什么问题。 在这里提琴-http: //jsfiddle.net/juy
1回复

单击某些文件时如何使用jstree在正确的div中显示内容

树形文件位于左侧,内容div位于右侧,如何显示 右边div上的一些数据, 这是我的代码: 谢谢
1回复

JsTree的节点未使用IE中Types插件中指定的图标

在我的应用程序中,我创建了以下jsTree 一切在FF和Chrome上都运行良好,类别节点使用指定的folder.png ,测试用例节点使用hlp.png作为其图标。 但是,Internet Explorer似乎并未对此予以尊重,它对所有节点使用默认图标。 任何人都有任何想法如何
1回复

jsTree.js库-如何捕获contextmenu创建事件,以便我可以更改其行为?

我想从jsTree上下文菜单中捕获create事件,因此在右键单击节点并选择“创建”后,我可以做任何我想做的事情。 例如,我想在单击“创建”后进入另一个页面并禁用创建按钮的默认行为。 我应该从图书馆文件中使用哪个事件? 我正在尝试类似的方法来尝试捕获事件,但是它不起作用。
1回复

JSTree,创建节点和javascript超时

我使用json数据创建了一个JSTree。 最初,一切正常。 但是,当我使用“创建”(crrm插件)功能动态添加节点时 jQuery(“#mpTree”)。jstree(“ create”,parentNodeId,“ last”,{“ attr”:{“ rel”:“ asse