捕获树节点已更改事件

时间:2016-07-08 18:41:21

标签: javascript jstree

我正在使用jstree,并希望在选择节点时进行一些ajax调用。如果再次单击同一节点,我不想触发ajax调用。 jstree example for listening events使用changed.jstree 如下:

$('#jstree')
  // listen for event
  .on('changed.jstree', function (e, data) {
//my custom code here that should trigger if a new node is selected
});

但是,如果我单击两次相同的节点,则会触发此操作。我在数据或事件对象e中找不到任何可以告诉我这是否与先前选择的节点相同的内容。 jstree中有什么可以帮我解决这个问题吗?如果不是最好的解决方法是什么?

1 个答案:

答案 0 :(得分:0)

我发现我们可以使用更改的插件来确定选定和取消选择的节点。这是显示的第一个插件here

在插件数组中创建jstree并包含已更改

 $('#jstree').jstree(
            {
                "core": {
                    "multiple": false,
                    // so that create works
                    "check_callback": true,
                    "data": menu
                },
                "plugins": ["changed"]
            }
    );

如果选中和取消选择的数组都为空,则意味着选择未被更改:

$('#jstree').on('changed.jstree', function (e, data) {
  if (!(data.changed.selected.length === 0 && data.changed.deselected.length === 0))
  {
      //This is when something is really changed.
});