2013-12-21 42 views
1

我想要的東西很簡單:JQtree:關聯的URL與節點

一個jQuery插件呈現一棵樹是可摺疊。我想保存狀態。我想控制初始狀態是什麼。我希望它看起來非常漂亮。而當用戶點擊一個鏈接,我希望它在那裏導航。簡單。

它在我看來像Jqtree是我正在尋找,但通過所有的文檔看,我沒有看到簡單的情況下指出與樹中的節點一起去的URL。

  • 鑑於我要求你同意Jqtree是正確的解決方案
  • 是否有一個有效樣本的地方,我可以看看,看看我的情況是如何處理的

謝謝!

回答

2

節點只是Javascript對象,所以你應該能夠爲url添加另一個屬性。因此,舉例來說,適應什麼jqTree網站是:

var data = [ 
    { 
     label: 'node1', 
     url: 'MyUrl.html', 
     children: [ 
      { label: 'child1', url: 'anotherURL.html' }, 
      { label: 'child2', url: 'andAnotherURL.html' } 
     ] 
    }, 
    { 
     label: 'node2', 
     url: 'www.your.get.the.point.com', 
     children: [ 
      { label: 'child3', url: 'google.com' } 
     ] 
    } 
]; 

現在,很明顯jqTree默認不會用這個做什麼,所以你必須處理,但任何時候,你都能夠獲得一個節點,你應該能夠檢索它的.url

var theURL = myNode.url; 

因此,舉例來說,它看起來像jqTree有tree.click event

$('#tree1').bind(
    'tree.click', 
    function(event) { 
     // The clicked node is 'event.node' 
     var node = event.node; 
     var theURL = node.url; 
     if (theURL) { 
      location.href = theURL; 
     } 
    } 
); 
+0

「你應該能夠爲網址添加另一個屬性」:太棒了! –

1

對於posterit Ÿ,我會建議這樣做,以保持項目爲本地鏈接,以保持打開新標籤/窗口,複製網址等的能力。

(假設您的節點具有url存儲像其他答案)

$tree.tree({ 
    data = whatever; 
    onCreateLi: function(node, $li) { 
     $li.find('.jqtree-title').wrap('<a href="' + node.url + '"></a>'); 
    } 
}); 

UPDATE:

這是快兩倍多,這是一個大問題我的大樹!

onCreateLi: function(node, $li) { 
     var a = $li.find('span')[0]; 
     a.outerHTML = '<a href="' + node.href + '">' + a.outerHTML + '</a>'; 
     }