2011-06-23 27 views
6

我有一個按鈕,重新加載(重新發送一個AJAX請求)一旦點擊jsTree。如何在完整的jstree重載事件上綁定回調函數?

這裏有一個例子代碼,我有:

treeContainer.bind("loaded.jstree", function() { 
    alert("the tree is loaded"); 
}).jstree(config); 

我遇到的問題是,我沒有警報(包裝在一個回調函數)顯示一次「刷新」按鈕被點擊第二,第三次等。 我使用了錯誤的jstree狀態事件嗎?

總而言之,我希望每次點擊'reload'按鈕時都要執行jsTree回調函數。

我正在使用jsTree 1.0-rc1(rev。191)

回答

-1

jstree documentation

.loaded()

甲虛設功能,其宗旨是 僅觸發加載事件。 事件在加載 樹的根節點後觸發一次,但在打開位於beginning_open 中的任何節點之前,將觸發 。

所以你可以從你的ajax調用的成功回調中調用這個方法。事情是這樣的:

$.ajax({ 
    url: "yourscript-url", 
    success: function(){ 
    $('selector-for-jstree-container').jstree('loaded'); 
    } 
}); 

也在看到相同的jstree文檔頁面上的「與樹交互」。

+0

這不是我所需要的......我想保留我的jsTree相關配置在一個地方。我正在尋找的事情是這樣的事件:'treeContainer.bind(「reloaded.jstree」,function(){...})。jstree(...)' –

+0

@John Doe我很抱歉,但我不認爲在jstree中有這樣的事件。你將不得不按照自己的方式工作(類似我所建議的),或者擴展jstree核心並實現這個新事件。 –

1

它添加到核心:只有this.reopened被添加到現有的媒體鏈接重新法

 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(); 
     }, 

音符。現在創建解封法:

 reopened : function() { 
      this.__callback(); 
     }, 

現在綁定新重新開放的方法來你的樹,選擇

}).bind("reopened.jstree", function (e,data) { 
     alert("i am refreshed..."); 
    }); 

要小心,因爲當樹完成此警報的消息也將被稱爲加載。 無論如何,它更好,因爲您現在有一種方法來在刷新樹時進行回調!

希望這可以幫助大家!

5

在建造新建築之前破壞樹木也很有效。

treeContainer.jstree("destroy"); 
treeContainer.bind("loaded.jstree", function() { 
    alert("the tree is loaded"); 
}).jstree(config); 
+0

謝謝。這種簡單性以及它是我能夠工作的唯一方法使我感到非常高興。 – user1167442

相關問題