2012-01-20 53 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像素下降

相关问题