2016-04-15 77 views
2

我已經開始使用JsTree,並且在導航節點時遇到問題。我使用了一個HTML列表來創建樹視圖,並且在創建樹時所有信息都出現在頁面上,沒有額外的AJAX調用。JsTree從未呈現的節點獲取html屬性

當選擇父節點時,我希望從所有子節點(一些自定義HTML屬性)獲取信息。當選擇父我使用:

data.instance.get_node("[id='" + value + "']"); 

對「changed.jstree」事件,返回節點,我需要的所有信息(包括所有兒童)作爲一個完整的jQuery對象。

但是,使用同一行從子項獲取信息時(不是在屏幕上繪製父項時),返回「false」,而不是jQuery對象。

在創建JsTree我也使用以下行來嘗試加載所有節點被創建時:

jQuery(controlSelector).jstree("load_all"); 

難道我做錯了什麼?有沒有辦法從一個子節點獲取信息,如果它沒有呈現,並且父節點沒有展開?

謝謝

回答

0

您可以使用所選節點的children_d屬性來抓住它的所有兒童的ID。檢查下面的代碼並演示 - Fiddle

var selectedNodes = $('#container').jstree().get_selected(true); 

for(var i=0, len=selectedNodes.length; i<len; i++) { 
    // access id's with selectedNodes[i].children_d ... 
} 
+0

謝謝你的回答,我可以讓孩子們好,它是我檢索問題的孩子的jQuery對象。當父類未展開時,如果使用子元素的ID來獲取該子元素的jQuery對象,則jQuery將只返回布爾值「false」而不是該信息,因爲該子元素未在屏幕上繪製。它是我試圖獲得的未渲染節點的jQuery對象。 –

+0

你會如何處理隱藏節點的jquery對象? –

+0

獲取我已添加到節點的自定義HTML屬性,用於我使用的每個節點:node.li_attr [「data-type」]以獲取我需要解析的一些信息。但是,子節點在隱藏時不會呈現。 –

0

我發現所有的未渲染的數據存儲在

jQuery("#container").jstree(true)._model.data 

我然後依次通過在樹中的所有節點和節點匹配我設置檢索我需要什麼條件語句作爲呼叫:

tree.get_node("#value"); 

如果節點當前未在屏幕上繪製,則返回false。