2015-01-14 81 views
0

我使用FancyTree的第一次,我想定義一些自定義節點的數據,特別是在命名用於創建樹的HTML數據「內容」的屬性:訪問FancyTree節點數據在JavaScript

<li id="xxxx" data-content="true" class="folder"> 

我有一個INIT事件處理程序用JavaScript編寫的,我想訪問我的自定義數據屬性有:

init: function(event, data, flag) 
    { 
    var tree = $("#tree").fancytree("getTree"); 
    node = tree.getNodeByKey(key); 
    var data = node.data; 

在一個在線教程,我看到我的自定義屬性將作爲節點訪問。 data.content,但我是聯合國能夠在警報框中顯示我的自定義屬性,以證明它實際上已定義。如何在JavaScript函數中訪問我的自定義數據屬性?

謝爾登

+0

嗨,如果你能發佈你的代碼,html/js,那會很好 – IndieRok

+0

沒有意識到我的HTML是不可見的,所以我已經糾正了,IndieRok。我還添加了事件處理程序的一個片段。讓我知道如果你需要看到更多的代碼... –

回答

3

好吧,所以我終於得到它的工作。你接近得到你的結果。

關鍵變量是一個字符串,它表示樹中每個LI元素的'id'屬性。您將使用該密鑰獲取節點。獲得節點後,您可以檢索與該節點關聯的自定義數據屬性。由於我們的'data'變量是一個包含鍵/值的對象,因此您需要將其稱爲數據對象上的'key'名稱以檢索該值,如'data.content'。

JS

$(function() { 
    // using default options 
    //Caching DOM element 
    var $myTree = $("#tree").fancytree(); 
    // Get the DynaTree object instance 
    var tree = $myTree.fancytree("getTree"); 
    //Set my key 
    var key = "id1"; 
    //Get the node 
    var node = tree.getNodeByKey(key); 
    //Get the custom data attribute associated to that node 
    var data = node.data; 
    //data is an object so, data.content will give you the value of the attribute 
    alert(data.content); 
}); 

JSFIDDLE

希望這有助於!

+0

OMG;整個下午我都被困住了。你是搖滾明星,而不僅僅是獨立型:)謝謝! –

+0

哈哈,快樂是我的全部。但我不得不承認,他們的文檔有點缺乏深度而且有點混亂。我不得不尋找他們過時的(和過時的)文檔頁面,這是更全面的。我有點理解爲什麼會覺得有點失落。 – IndieRok

+0

是的,沒有一個地方可以解釋所有FT功能。但我會記住,較舊的Dynatree文檔更好。我即將首次在JavaScript中創建一個子節點,因此如果閱讀起來更好,我可能需要查閱較舊的文檔:) –