在我的页面中,我有两个宽度相同的表格,它们都是水平滚动的。当每个滚动时,我需要将两个表都设置为相同的位置。如何使用defineSetter在两个对象中正确设置scrollLeft?
其实,我的代码是:
var scrollA = $('#scrollA'),
scrollB = $('#scrollB');
scrollA.on('scroll', function() {
scrollB[0].scrollLeft = scrollA[0].scrollLeft;
});
它的工作原理。问题是,有些情况下加载的数据足够大,从而减慢浏览器和滚动事件的速度。
然后,我试图改善这些情况下的用户体验。
我做了这个片段,我尝试使用的Object
的__defineSetter__
功能:
var elementA = { scrollLeft: 30 },
elementB = { scrollLeft: 30 };
elementA.__defineSetter__('scrollLeft', val => elementB.scrollLeft = val);
elementA.scrollLeft += 5;
console.log(elementA.scrollLeft + ' == ' + elementB.scrollLeft);
但是你可以看到正在运行的代码段,它设置undefined
到elementA.scrollLeft
和NaN
至elementB.scrollLeft
。
我想在这里得到一些指导,谢谢你的时间。
'__defineSetter__是'已过时,使用'defineProperty()' – zer00ne
而不必单独的滚动条为每个表为什么不能ü尝试把他们都在一个容器中,有一个的滚动条到该容器,以便我们可以避免这种情况。我建议这个bcoz你说这两个表具有相同的宽度 – Varatharaj
@Varatharaj。实际上,它是我正在处理的一个插件,它冻结了表格的列和/或标题...我现在无法测试它,但我会稍后尝试您的想法 –