【问题标题】:Jstree : dblclick binding parameter data is undefinedJstree:dblclick绑定参数数据未定义
【发布时间】:2011-05-18 11:34:07
【问题描述】:

我尝试使用好的库jstree,但dblclick 绑定有一些奇怪的问题。 这是我的代码

$("#basic_html").jstree({
    themes: {
        url: "http://mywork/shinframework/shinfw/themes/redmond/css/jstree/default/style.css"
    },
    "plugins" : ["themes","html_data","ui","crrm","hotkeys", "core"],
});

$("#basic_html").bind("dblclick.jstree", function (e, data) {
    alert(e);
    alert(data);
});

当此代码运行并且我为某个节点创建 dblclick 时,我可以看到 2 个警报。第一个是object - 对,第二个是undefined - 但我想接收数据信息。

如果有专家解决了这个问题,请给我正确使用 dblclick 的正确方法,并接收有关我点击的节点的“数据”信息。

谢谢

【问题讨论】:

  • 嗨,我正在尝试将事件 dblclick.jstree 与以下代码一起使用。 .bind("dblclick.jstree", function (event, data) { }) 问题是数据是未定义的,那么我怎样才能获得对我的树对象的引用?上面的代码适用于所有其他事件。在那里我得到了数据,并且可以使用 data.inst 获得对树的引用。我真的需要一些帮助..
  • 同样的问题。找到解决方案了吗?

标签: jstree


【解决方案1】:

我推荐这种方法。 . .

$("#basic_html li").live("dblclick", function (data) {
   //this object is jsTree node that was double clicked
   ...
});

首先,您通常只需要知道 li 是否被点击,因此监控 li 上的事件将为您提供所需的一切。其次,使用 livedelegate 进行事件绑定,这样您就可以在不破坏事件的情况下操作树。

一旦您拥有被双击的节点(this 对象),您就可以使用像这样的内置函数。 . .

if (!jsAll.is_selected(this)) { return false; } //cancel operation if dbl-clicked node not selected

在哪里。 . .

jsAll = $.jstree._reference("basic_html")

【讨论】:

  • 不幸的是,data 仍然是 null 使用这种方法
【解决方案2】:
$("#basic_html").bind("dblclick.jstree", function (event) {
    var node = $(event.target).closest("li");//that was the node you double click
});

这就是你想要的代码。

【讨论】:

    猜你喜欢
    • 2014-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-26
    • 2014-12-09
    • 1970-01-01
    相关资源
    最近更新 更多