2012-04-20 4 views
0

У меня есть сайт WordPress, где на странице сообщений у меня есть заблокированная панель jquery. Фиксированная боковая панель начинается с раздела сообщений и останавливается в разделе комментариев.JQuery исправлена ​​боковая панель, не работающая над длинным контентом

Я использую этот JQuery

$window = $(window), 
    $sidebar = $("#side-scroller"), 
    sidebarTop = $sidebar.position().top, 
    sidebarHeight = $sidebar.height(), 
    $footer = $("#comments"), 
    footerTop = $footer.position().top,  
    $sidebar.addClass('fixed'); 

    function isScrolledIntoView(elem) 
    { 
     var docViewTop = $(window).scrollTop(); 
     var docViewBottom = docViewTop + $(window).height(); 

     var elemTop = $(elem).offset().top; 
     var elemBottom = elemTop + $(elem).height(); 

     return ((elemBottom <= docViewBottom) && (elemTop >= docViewTop)); 
    } 


    $window.scroll(function(event) { 
     scrollTop = $window.scrollTop(), 
     topPosition = Math.max(0, sidebarTop - scrollTop), 
     topPosition = Math.min(topPosition, (footerTop - scrollTop) - sidebarHeight); 
     $sidebar.css('top', topPosition); 

     if(isScrolledIntoView('#comments')){ 
      $("#side-scroller").hide(); 
     } 
     else{ 
      $("#side-scroller").show(); 
     } 
    }); 

Это работает хорошо, но когда содержание поста слишком долго, то он никогда не останавливается в разделе комментариев.

Здесь вы можете увидеть демо,

Нормальный пост (где фиксируется боковая панель работает должным образом) http://webstutorial.com/html5-css3-toggle-slideup-slidedown/html-5

И длинный пост (где боковая панель поддерживает прокрутку) http://webstutorial.com/google-server-side-geocoding-php-infobox/website-tweaks/google

ЭТО НЕ СПАМ, ИЛИ LINK BUILDING, поэтому, пожалуйста, ни одного голоса

+0

Могу ли я узнать причину понижения голосов? –

ответ

0

Я думаю, что это работает, как когда он неправильно вычисляет высоту из-за изменений страницы после загрузки.

поэтому, если вы переместите это в функцию $ window.scroll, он должен получить правильные значения для прокрутки.

$footer = $("#comments"), 
footerTop = $footer.position().top; 
+0

Хорошо, я просто попробую и посмотрю –

+0

Это сработало спасибо –

+0

Ваш прием :) –

Смежные вопросы