2010-12-07 19 views
1

我正在使用jQuery Treeview plugin,我想知道是否可以以編程方式打開分支。jQuery Treeview:以編程方式打開分支

我正在使用treeview和一系列複選框。每個LI節點包含複選框和標籤。用戶可以展開/摺疊分支並檢查所需的選項。但是,用戶可能間接調用ajax調用,導致某些複選框被選中(包括複選框由於它們位於摺疊節點內而不可見)。

因此,如果我的ajax回調檢查我的任何複選框,我想打開包含這些複選框的分支。這是我第一次嘗試:

$('#my_Treeview').find(":checked").closest("li").addClass("open")

可惜,這是行不通的。由於樹視圖包含相當多的元素,因此我首先簡單地擴展所有分支是不實際的。

回答

3

這是可行的。但不通過.addClass(「打開」)。至少對我而言,這種方式是失敗的。要打開只有你自己的節點,在狀態時,所有的節點都塌了,試試這個:

.parents('ul').show();

一個例子:

function openMyOwnBranchInTree(idLeaf) {      
     $('#table' + idLeaf).parents('ul').show();     
} 
+0

爲延遲更新我的問題抱歉,我終於確認你的答案是正確的。非常感謝! – NobodyMan 2013-01-03 19:54:31

0

它看起來不像它包含任何打開分支的方法。

要手動執行此操作,您需要手動修改類並顯示/隱藏UL可見性。

查看他們的演示,看看UL的父母在展開和收起時獲得什麼樣的課程。手動應用這些類,然後在UL上執行.show()。那應該是吧。

或者,(這是Treeview的創建者推薦的),請查看jsTree。我曾多次使用過它並喜歡它。它可以讓你做所有你提到的。

2

我也有類似的問題,並固定它是這樣的:

$("span:contains('" + something + "')").parent().addClass('open').find('ul').css({'display':'block'}); 

這樣,我搜索在樹中的特定條目,並通過改變

打開
<ul id="browser" class="treemenu treeview"> 
    <li class="expandable"><span>something</span> 
    <ul style="display: none;"> 
     <li>...</li> 
     ... 
    </ul> 
    </li> 
</ul> 

<ul id="browser" class="treemenu treeview"> 
    <li class="open expandable"><span>something</span> 
    <ul style="display: block;"> 
     <li>...</li> 
     ... 
    </ul> 
    </li> 
</ul> 

...這工作得很好!