如何在完整的jstree重载事件上绑定回调函数?

问题描述

| 我有一个按钮,可在单击jsTree时重新加载(重新发送AJAX请求)。 这是我的示例配置代码
treeContainer.bind(\"loaded.jstree\",function () {
    alert(\"the tree is loaded\");
}).jstree(config);
我遇到的问题是,在第二次,第三次等单击“重新加载”按钮后,没有显示警报(包装在回调函数中)。 我使用了错误的jstree状态事件吗? 总而言之,我希望每次单击“重新加载”按钮时都执行jsTree回调函数。 我目前正在使用jsTree 1.0-rc1(rev.191)。     

解决方法

        在构建新树之前将其破坏也可以。
treeContainer.jstree(\"destroy\");
treeContainer.bind(\"loaded.jstree\",function () {
    alert(\"the tree is loaded\");
}).jstree(config);
    ,        将此添加到核心:
        reopen : function () {
            var _this = this;
            if(this.data.core.to_open.length) {
                $.each(this.data.core.to_open,function (i,val) {
                    _this.open_node(val,false,true); 
                });
            }
            this.__callback({});
            this.reopened();
        },
请注意,只有this.reopened被添加到所有已经存在的现有reopen方法中。现在创建重新打开的方法:
        reopened : function () {
            this.__callback();
        },
现在将新的重新打开的方法绑定到您的树选择器
}).bind(\"reopened.jstree\",function (e,data) {
        alert(\"i am refreshed...\");
    });
请小心,因为在树加载完成后也会调用此警报消息。 无论如何,它会更好,因为刷新树后您现在有了一种回调方法! 希望这对大家有帮助!     ,        从jstree文档中:   .loaded()      一个虚拟函数,其目的是   仅触发已加载的事件。这个   事件触发一次   树的根节点已加载,但是   在initial_open中设置的任何节点之前   被打开。 因此,您可以从ajax调用的成功回调中调用此方法。像这样:
$.ajax({
  url: \"yourscript-url\",success: function(){
    $(\'selector-for-jstree-container\').jstree(\'loaded\');
  }
});
另请参见同一jstree文档页面上的“与树交互”部分。