首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Fancytree scrollIntoView过滤后

Fancytree scrollIntoView过滤后
EN

Stack Overflow用户
提问于 2015-02-06 09:37:03
回答 1查看 1.6K关注 0票数 0

我使用的是带有过滤器扩展的fancyTree v2.7.0。我已经启用了autoscroll功能,以滚动到活动节点。

我遇到的问题是treeview何时被过滤了。如果单击“展开”按钮以显示项目的子项,则控制台中将显示以下错误消息。

代码语言:javascript
复制
Error: Fancytree assertion failed: scrollIntoView node is invisible

我创建了一个jsFiddle来重新创建问题http://jsfiddle.net/ajw89/86308as6/8/

这是Fancytree的错误还是我做错了什么?

EN

回答 1

Stack Overflow用户

发布于 2015-02-06 14:34:01

我也经历过同样的问题。只有在设置autoScroll: truefilter:{mode:“隐藏”}设置时才会出现。如果您可以离开没有这些设置之一,它工作良好!

当为节点的最后一个子节点计算自动滚动时,nodeSetExpanded()方法就会出现问题。如果此子节点不匹配筛选条件,则通过筛选隐藏它,因此.is(":visible")断言失败。通过在FancytreeNode中引入以下方法,我在本地修复了这个问题:

代码语言:javascript
复制
getLastVisibleChild: function() {
        var last = null;

        if (this.children) {
            for(var i=0, l=this.children.length; i<l; i++){
                if ($(this.children[i].span).is(":visible")) {
                    last = this.children[i];
                }
            }
        }

        return last;
    }

而不是使用nodeSetExpanded()中的这个方法来替换

代码语言:javascript
复制
// Scroll down to last child, but keep current node visible
node.getVisibleChild().scrollIntoView(true, {topNode: node}).always(function(){

使用

代码语言:javascript
复制
// Scroll down to last child, but keep current node visible
node.getLastVisibleChild().scrollIntoView(true, {topNode: node}).always(function(){

效果很好。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28362654

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档