Javascript 双击以编辑节点,然后使用jstree重命名

Javascript 双击以编辑节点,然后使用jstree重命名,javascript,jquery,jstree,Javascript,Jquery,Jstree,我已经设置了一个jstree(在div id=“surveyManager”上)。我将dbclick和rename函数绑定到它,如下所示: .bind("rename.jstree", function (node, data) { edit_node(node,data); }), .bind("dblclick.jstree", function (event) { //Double Click to Rename

我已经设置了一个jstree(在div id=“surveyManager”上)。我将dbclick和rename函数绑定到它,如下所示:

 .bind("rename.jstree", function (node, data) {
            edit_node(node,data);
}),

.bind("dblclick.jstree", function (event) {
            //Double Click to Rename
                    jQuery("#surveyManager").jstree("rename");
    })
在这里,edit_node是一个必须实现的函数,它通过ajax调用传递所有节点信息


是否可以设置树,这样在dbclick上,我就可以触发edit_节点(节点,数据),而不是重命名节点。也许是另一个jstree函数,或者我可以在其他地方定义它。请帮助

您可以使用jQuery'a方法触发定义的事件

这可以在下面实现

.bind("rename.jstree", function (node, data) {
  edit_node(node,data);
}),

.bind("dblclick.jstree", function (event) {
  //Double Click to Rename
  //jQuery("#surveyManager").jstree("rename");
  jQuery.trigger("rename.jstree");
})

您可以使用jQuery'a方法触发定义的事件

这可以在下面实现

.bind("rename.jstree", function (node, data) {
  edit_node(node,data);
}),

.bind("dblclick.jstree", function (event) {
  //Double Click to Rename
  //jQuery("#surveyManager").jstree("rename");
  jQuery.trigger("rename.jstree");
})

我在这里回答我自己的问题,我通过尝试其他一些事情来解决这个问题。 我们可以使用select_节点和编辑项,而不是双击进行编辑时使用重命名功能

传递的参数是事件和数据。我们可以使用event.target来获取节点信息,并且已经提供了数据,使我们能够简单地调用另一个函数

.bind("select_node.jstree", function (e,data) {
    var node = $(e.target).closest("li");
       edit_node(node,data);
   });

谢谢你的帮助

我在这里回答我自己的问题,我通过尝试其他一些事情来解决这个问题。 我们可以使用select_节点和编辑项,而不是双击进行编辑时使用重命名功能

传递的参数是事件和数据。我们可以使用event.target来获取节点信息,并且已经提供了数据,使我们能够简单地调用另一个函数

.bind("select_node.jstree", function (e,data) {
    var node = $(e.target).closest("li");
       edit_node(node,data);
   });

感谢您的帮助

我不确定是否理解您的问题,但如果您想双击进行重命名,请尝试:

    tree.off('dblclick').on('dblclick','.jstree-anchor', renameNode);               

    function renameNode() {
        var instance = $.jstree.reference(this),
        node = instance.get_node(this);
        var old = node.text.replace(/\s+$/, ''); // trim right spaces

        inst.edit(node, null, function(node, success, cancelled) {
            if (!success || cancelled) return;
            if (node.text.replace(/\s+$/, '')==old) return;

            // all good, your rename code here
        });
    }
.off('dblclick')是防止双击时默认jstree打开节点所必需的


请注意,如果还将树“click”事件绑定到某个位置,它也将触发dblclick。将“click”更改为“singleclick”,并使用jquery.singleclick.js

我不确定是否理解您的问题,但如果您想双击进行重命名,请尝试:

    tree.off('dblclick').on('dblclick','.jstree-anchor', renameNode);               

    function renameNode() {
        var instance = $.jstree.reference(this),
        node = instance.get_node(this);
        var old = node.text.replace(/\s+$/, ''); // trim right spaces

        inst.edit(node, null, function(node, success, cancelled) {
            if (!success || cancelled) return;
            if (node.text.replace(/\s+$/, '')==old) return;

            // all good, your rename code here
        });
    }
.off('dblclick')是防止双击时默认jstree打开节点所必需的


请注意,如果还将树“click”事件绑定到某个位置,它也将触发dblclick。将“click”更改为“singleclick”,并对阅读此答案的任何人使用jquery.singleclick.js

。我不知道这个答案在旧的jstree上是否有效,但它对我不起作用。我实现了点击编辑这个

以下是有效的代码:

$(“#jstree_demo_div2”)
//倾听事件
.on('select_node.jstree',函数(e,数据){
var节点=data.instance.get_节点(data.selected[0]);
data.instance.edit(节点);

});。我不知道这个答案在旧的jstree上是否有效,但它对我不起作用。我实现了点击编辑这个

以下是有效的代码:

$(“#jstree_demo_div2”)
//倾听事件
.on('select_node.jstree',函数(e,数据){
var节点=data.instance.get_节点(data.selected[0]);
data.instance.edit(节点);

});
Umm,在双击事件中调用edit_node?我想他可能缺少节点和数据变量。Umm,在双击事件中调用edit_node?我想他可能缺少节点和数据变量。当我尝试这样做时,我得到了错误类型error:jQuery.trigger不是一个函数您以前在
jQuery中遇到过同样的问题吗(“#surveyManager”).jstree(“重命名”)
?如果您遇到了这个错误,那么我假设jQuery没有被包括在内。在您的控制台中,尝试键入
jQuery
$
以查看这些变量中是否有一个全局存在。当我尝试这样做时,我得到了错误类型error:jQuery.trigger不是一个函数您以前在
jQuery(“#surveyManager“).jstree(“重命名”);
?如果您遇到此错误,那么我假设没有包含jQuery。在控制台中,尝试键入
jQuery
$
,查看这些变量中是否有一个全局存在。我认为不必使用实例,我们可以获得具有以下内容的节点:
var node=$(“#divtree”).jstree(“get#u selected”)
我想我们不需要使用实例,而是可以使用:
var node=$(“#divtree”).jstree(“get#u selected”)