当我们找到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
有人遇到过这样的问题吗?我不明白为什么不再讨论了! 谢谢你们!
编辑:我把树放在一个对话框中,我知道树的滚动需要从窗口而不是对话框的高度,宽度和坐标。有任何确认吗?答案 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}}