//получаем положение и размеры сайдбара после загрузки страницы и положение футера
var sTop = $('.sidebar').offset().top;
var sLeft = $('.sidebar').offset().left;
var sHeight = $('.sidebar').height();
var fTop = $('#footer').offset().top;
$(window).scroll(function () {
//получаем текущие координаты
var top = $(document).scrollTop();
//Если проспролили дальше, чем верхний край сайдбара был, когда страница открылась и нижний край сайдбара не упирается в футер, меняем позиционирование
if (top >= sTop && (top + sHeight) <= fTop) {
$('.sidebar').css({ 'position': 'fixed', 'top': '0px', 'left': sLeft + 'px' });
} else {
$('.sidebar').removeAttr('style');
}
});