How to bind scroll/mousewheel between different elements by jquery?

In a case, I want to sync scrollbar action between different element by jquery. For example, when scroll $a's scrollbar, or mouse wheel scroll down on $a, I want to scroll $b's scrollbar, or even scrollTop/scrollLeft when $b is overflow:hidden. Now let's do it:

let syncScrollTopA2B = ($a, $b) => {
  $a.on('scroll', function() {
    $b.scrollTop($a.scrollTop())
  })
}
let syncMousewheelTopA2B = ($a, $b) => {
  $a.on('mousewheel DOMMouseScroll', function(e) {
    let { deltaY } = e.originalEvent
    $a.scrollTop($a.scrollTop() + deltaY)
    $b.scrollTop($a.scrollTop())
  })
}
let syncTop = ($a, $b) => {
  syncScrollTopA2B($a, $b)
  syncMousewheelTopA2B($b, $a)
}
let syncScrollLeftA2B = ($a, $b) => {
  $a.on('scroll', function() {
    $b.scrollLeft($a.scrollLeft())
  })
}
let syncMousewheelLeftA2B = ($a, $b) => {
  $a.on('mousewheel DOMMouseScroll', function(e) {
    if (e.shiftKey) { // press shift key on your keyboard
      let { deltaX } = e.originalEvent
      $a.scrollLeft($a.scrollLeft() + deltaX)
      $b.scrollLeft($a.scrollLeft())
    }
  })
}
let syncLeft = ($a, $b) => {
  syncScrollLeftA2B($a, $b)
  syncMousewheelLeftA2B($b, $a)
}

When pull scrollbar on $a, scrollTop will sync to $b. The same with mouse wheel event. However, horizontal mouse wheel event is different, you should press shift on your keyboard at the same time.