rus*_*ego 11 javascript jquery dynatree jquery-dynatree
我有固定高度和垂直滚动条的dynatree.
node.activate(); 选择我正在搜索的节点,但不移动垂直滚动条,所以我必须手动滚动才能看到活动节点.
我如何以编程方式滚动它?
感谢mar10,我解决了这个问题:
var activeLi = node.li;
$('#tree').animate({
scrollTop: $(activeLi).offset().top - $('#tree').offset().top + $('#tree').scrollTop()
}, 'slow');
Run Code Online (Sandbox Code Playgroud)
Dynatree没有内置的scrollTo功能.但是,一旦拥有了想要显示的DOM元素,就应该可以使用现有的方法和插件之一.
在您的情况下,您似乎已经有了一个node
对象,因此您可以使用或获取关联<li>
和<span>
标记.node.li
node.span
通常,您可以通过调用随时获取活动节点
var node = $("#tree").dynatree("getActiveNode");
// or
var node = $("#tree").dynatree("getTree").getActiveNode();
Run Code Online (Sandbox Code Playgroud)
然后获取关联的DOM元素:
var activeLI = node && node.li;
Run Code Online (Sandbox Code Playgroud)
或处理激活事件:
onActivate: function(node) {
var activeLI = node.li;
...
}
Run Code Online (Sandbox Code Playgroud)
获得元素后,使用标准方法:
使用jquery滚动到div, jQuery滚动到元素, 如何滚动到jQuery中的元素?,...
编辑2014-05从Fancytree 2.0 开始,autoScroll作为标准选项添加.
我有类似的问题,并且无法使scrollTop工作,如上例所述.我通过将选择器从'#tree'更改为'.dynatree-container'来修复它:
$('.dynatree-container').animate({ // animate the scrolling to the node scrollTop: $(activeLi).offset().top - $('.dynatree-container').offset().top + $('.dynatree-container').scrollTop() }, 'slow');
这应该让你去,并节省几个小时的挫折(:
顺便说一下,我使用dynatree版本1.22和jquery 1.8.3和jquery ui 1.9.2.
归档时间: |
|
查看次数: |
6921 次 |
最近记录: |