Відповідь StanleyH була чудовою, але вона мала один нещасний помилку: натискання затіненої області прокрутки більше не переходить до вибраного вами виділення. Натомість те, що ви отримуєте, - це дуже невеликий і дещо дратівливий приріст у положенні прокрутки.
Тестовано: 4 версії Firefox (100% постраждалих), 4 версії Chrome (50%).
Ось моя jsfiddle . Ви можете подолати це за допомогою наявності ввімкнення / вимкнення (true / false) var, який дозволяє одночасно запускати лише одну подію onScroll ():
var scrolling = false;
$(".wrapper1").scroll(function(){
if(scrolling) {
scrolling = false;
return true;
}
scrolling = true;
$(".wrapper2")
.scrollLeft($(".wrapper1").scrollLeft());
});
$(".wrapper2").scroll(function(){
if(scrolling) {
scrolling = false;
return true;
}
scrolling = true;
$(".wrapper1")
.scrollLeft($(".wrapper2").scrollLeft());
});
Проблема поведінки з прийнятим відповіддю:
Насправді бажана поведінка:
Отже, тільки чому це відбувається? Якщо ви пробіжете код, ви побачите, що wrapper1 викликає scrollLeft, а wrapper2 викликає scrollLeft, і повторює це нескінченно, тож у нас є проблема нескінченного циклу. Або, вірніше: продовження прокрутки користувача конфліктує з викликом прокрутки wrapperx, виникає конфлікт події, і кінцевим результатом є не стрибки в смуги прокрутки.
Сподіваюсь, це допоможе комусь ще!