2012-01-20 85 views
11

我有固定高度和垂直滾動條的dynatree。dynatree - 如何滾動到主動節點?

node.activate();選擇我正在搜索的節點,但不移動垂直滾動條,所以我必須手動滾動才能看到活動節點。

如何將它滾動到programmaticlly?


感謝mar10,我解決了這個問題:

var activeLi = node.li; 
$('#tree').animate({ 
    scrollTop: $(activeLi).offset().top - $('#tree').offset().top + $('#tree').scrollTop() 
}, 'slow'); 

回答

8

Dynatree沒有內置scrollTo功能。 但是,您應該可以使用現有的方法和插件之一,只要您有要顯示的DOM元素。

在你的情況,你似乎已經有一個node對象,這樣你就可以使用node.linode.span的相關<li><span>標籤。

一般來說你可以在任何時候主動節點通過調用

var node = $("#tree").dynatree("getActiveNode"); 
// or 
var node = $("#tree").dynatree("getTree").getActiveNode(); 

然後得到相應的DOM元素:

var activeLI = node && node.li; 

或處理激活事件:

onActivate: function(node) { 
    var activeLI = node.li; 
    ... 
} 

一旦你有了元素,使用標準方法:

Scroll to a div using jqueryjQuery scroll to elementHow to scroll to an element in jQuery?, ...

編輯2014-05Fancytree 2.0自動滾屏開始加入作爲標準的選擇。

+0

對於未來遇到此問題的其他人,我遇到了一個問題,即node.li在IE中未定義。在我的情況''node.span' _was_定義(但我沒有立即意識到這一點)。檢查兩者可能是一個好主意,因爲一個是未定義的。 –

5

我有一個類似的問題,並且在上面的例子說明一直沒能得到scrollTop的工作。

 
$('.dynatree-container').animate({ // animate the scrolling to the node 
    scrollTop: $(activeLi).offset().top - $('.dynatree-container').offset().top + $('.dynatree-container').scrollTop() 
}, 'slow'); 

這應該讓你去和保存frustrataion的幾個小時(:

順便說一句,我我從「#tree」選擇更改爲「.dynatree容器」固定它我使用dynatree版本1.22和jquery 1.8.3和jquery ui 1.9.2。

+0

像魅力一樣工作! :)謝謝 –

+0

在這裏工作就像一個魅力,謝謝! – HelloWorld

0

當使用$('。dynatree-container')時,如果頁面上有多個樹,就會出現問題,因爲這樣會嘗試和選擇每一棵樹與這個類我有很多樹,所以我需要選擇具有特定ID的樹...但我發現,像以前的人一樣,試圖通過它的id來選擇樹(e g'#tree')不起作用。那麼,什麼會..?做一些像= $(「#prevPageTree」)。dynatree(「getTree」)。偏移量也行不通...

幾分鐘後:好的,想通了如何做到這一點。在Chrome調試器中進行的深入探索顯示,.dynatree容器類實際上附加在用於初始化dynatree實例的#tree元素下的dynatree插入的< ul>元素中。所以,你需要做的是這樣

$("#tree ul").animate({ // animate the scrolling to the node 
    scrollTop: $(activeLi).offset().top - $('#tree ul').offset().top + $('#tree ul').scrollTop() 
}, 'slow'); 

如果像我一樣,你不希望它的節點向右滾動至窗口的頂部,然後

scrollTop: $(activeLi).offset().top - $('#prevPageTree ul').offset().top + $('#prevPageTree ul').scrollTop() - 150 

將很好地把你的節點150像素下降

相關問題