选择滚动元素时,jsTree会回滚到顶部

时间:2014-08-10 19:12:31

标签: javascript jquery jstree

当我们找到jsTree时,我正在研究的项目得到了很大的改进,但我们处理的是一个大型数据库,所以滚动的必要性是主要的。问题是当选择一个元素时我必须滚动查看,树回到顶部,最后一个选中的元素仍然是未选中的。与相反的操作类似(取消选择)。

我经常搜索,几乎找不到任何东西。这个小组对话可以追溯到2010年。

https://groups.google.com/forum/#!topic/jstree/4K1VP0h1Obk

这个先前提出的问题没有得到答复......已经3年了。

in IE8 using jQuery JSTree when scrolling the click handlers don't work anymore

有人遇到过这样的问题吗?我不明白为什么不再讨论了! 谢谢你们!

编辑:我把树放在一个对话框中,我知道树的滚动需要从窗口而不是对话框的高度,宽度和坐标。有任何确认吗?

1 个答案:

答案 0 :(得分:2)

我有同样的问题。我发现,当您尝试单击节点时,或者甚至在您点击其边界内的任何位置时,以及当您按tab时,树不仅会将自身滚动到顶部。

我很快发现jstree在树元素上设置了tabindex,删除了这个就解决了问题!

$('#yourtree').jstree(/*your jstree call*/).removeAttr('tabindex');

修改

我在snap drawer内使用jstree时再次遇到此问题,有时在选择节点时(然后将浏览器的代码集中在另一个元素上)抽屉将滚动到顶部。

通过上述修复,此问题仅出现在iOS Safari中。

但是,我注意到[在chrome中]每当用户专注于树(设置为tabindex)或焦点在其他地方时,div会在树-1上重复设置0 (设为var tree = $('#yourtree'); tree[0].setAttribute = function(name) { if (name != 'tabindex') Element.prototype.setAttribute.apply(this, arguments); }; $('#yourtree').jstree(/*your jstree call*/); )。

破解javascript DoM元素阻止jstree操纵tabindex并完全解决问题:

{{1}}