Javascript 设置scrollTop使滚动非常慢

Javascript 设置scrollTop使滚动非常慢,javascript,html,jquery,css,Javascript,Html,Jquery,Css,我一个接一个地跳了两个舞。当我滚动div1时,div2也应滚动,同样,如果我滚动div2,则div1应滚动。我通过将div1的scrollTop值设置为div2,将div2设置为div1来实现这一点。但这里的问题是滚动事件被多次触发,滚动速度非常慢。我已经制作了一个现场演示,有人能帮我吗 (函数(){ var目标=$(“#表固定”); $(“#tableLista”)。滚动(函数(e){ 道具(“scrollTop”,this.scrollTop) .prop(“scrollLeft”,thi

我一个接一个地跳了两个舞。当我滚动div1时,div2也应滚动,同样,如果我滚动div2,则div1应滚动。我通过将div1的scrollTop值设置为div2,将div2设置为div1来实现这一点。但这里的问题是滚动事件被多次触发,滚动速度非常慢。我已经制作了一个现场演示,有人能帮我吗

(函数(){
var目标=$(“#表固定”);
$(“#tableLista”)。滚动(函数(e){
道具(“scrollTop”,this.scrollTop)
.prop(“scrollLeft”,this.scrollLeft);
e、 预防默认值();
});
var target1=$(“#tableLista”);
$(“#tableFixed”)。滚动(函数(e){
target1.prop(“scrollTop”,this.scrollTop)
.prop(“scrollLeft”,this.scrollLeft);
e、 预防默认值();
});
})();
.divScrollDiv{
显示:内联块;
宽度:10%;
边框:1px纯黑;
高度:100px;
溢出:滚动;
}
1.tableNoScroll{
溢出:隐藏;
溢出y:滚动;
}

滚动左div,观看右div

00 2. 3. 4. 5. 6. 7. 8. 9 10 11 12 13 14 15 16 17 18 19 A. B C D E F G H 我 J K L A. B C D E F G H 我 J K L A. B C D E F G H 我 J K L A. B C D E F G H 我 J K L A. B C D E F G H 我 J K L A. B C D E F G H 我 J K L A. B C D E F G H 我 J K L A. B C D E F G H 我 J K L A. B C D E F G H 我 J K L A. B C D E F G H 我 J K L A. B C D E F G H 我 J K L A. B C D E F G H 我 J K L A. B C D E F G H 我 J K L A. B C D E F G H 我 J K L A. B C D E F G H 我 J K L A. B C D E F G H 我 J K L A. B C D E F G H 我 J K L
您需要某种类型的锁定,以防止触发循环中的
滚动。一个简单的原语锁可以跟踪您悬停的表,并且只触发该元素的同步

  var scrollSource;
  var setScrollSource = function() {
    scrollSource = this;
  }
  target.hover(setScrollSource);
  target1.hover(setScrollSource);

  target.scroll(function (e) {
    if (this !== scrollSource) {
      return;
    }
    // sync logic
  }

  target1.scroll(function (e) {
    if (this !== scrollSource) {
      return;
    }
    // sync logic
  }
(函数(){
var目标=$(“#表固定”);
var target1=$(“#tableLista”);
变量源;
var setScrollSource=函数(){
scrollSource=这个;
}
target.hover(setScrollSource);
target1.悬停(设置CrollSource);
目标1.滚动(功能(e){
如果(此!==scrollSource){
返回;
}
目标
.prop(“scrollTop”,此为.scrollTop)
.prop(“scrollLeft”,this.scrollLeft);
e、 预防默认值();
});
目标。滚动(功能(e){
如果(此!==scrollSource){
返回;
}
目标1
.prop(“scrollTop”,此为.scrollTop)
.prop(“scrollLeft”,this.scrollLeft);
e、 预防默认值();
});
})();
.divScrollDiv{
显示:内联块;
宽度:10%;
边框:1px纯黑;
高度:100px;
溢出:滚动;
}
1.tableNoScroll{
溢出:隐藏;
溢出y:滚动;
}

滚动左div,观看右div

00 2. 3. 4. 5. 6. 7. 8. 9 10 11 12 13