正确协调两个滚动区域

时间:2013-03-06 18:23:59

标签: javascript jquery

我正在尝试协调两个div的滚动similar to this question,但我的两个div都是可滚动的(而在问题中,其中一个div是控件而另一个是slave,用户可以滚动要么和其他人相应地重新滚动。)

我的jQuery / JavaScript是:

// as the user scrolls one div, we also scroll the other

var scrolldiv1 = $('#scrolldiv1'),
    scrolldiv2 = $('#scrolldiv2');

scrolldiv1.scroll(function () { scrolldiv2.scrollTop(scrolldiv1.scrollTop()); });
scrolldiv2.scroll(function () { scrolldiv1.scrollTop(scrolldiv2.scrollTop()); });

当用户使用元素的滚动条滚动div时,一切都运行得很漂亮。当用户在悬停在元素上时使用他或她的鼠标滚轮滚动div时,div保持同步但滚动非常缓慢。我怀疑这两个事件都在发射,而且这些阵地互相争斗。

有没有人有任何关于我可以做什么来做滚轮滚动的建议,就像滚动条启动的滚动一样?

提前致谢!

1 个答案:

答案 0 :(得分:0)

我能够通过添加超时事件来解决我的问题,以延迟触发伴侣div的滚动。

scrolldiv1.scroll(function () {
    setTimeout(function () { scrolldiv2.scrollTop(scrolldiv1.scrollTop()); }, 200);
});
scrolldiv2.scroll(function () {
    setTimeout(function () { scrolldiv1.scrollTop(scrolldiv2.scrollTop()); }, 200);
});