Код jQuery, работающий в Safari и Chrome, но не в Firefox - PullRequest
0 голосов
/ 17 апреля 2010

У меня есть сайт с длинным списком твитов, и по мере того, как вы прокручиваете правый столбец, следует за вами вниз, показывая статистику на твитах. (См. Это в действии на http://www.grapevinegame.com. Нажмите «запомнить», затем «пропустите», чтобы перейти на страницу списка. Работает в Safari и Chrome).

Я использую jQuery для обновления верхнего поля в правом столбце, увеличивая его при прокрутке вниз. Похоже, что он отлично работает в браузерах на основе webkit, но в Firefox не работает. Вот код, правый элемент столбца - это div с id = "distance".

// Listen for scroll function
            $(window).scroll(function () {

                    // Calculating the position of the scrollbar
                    var doc = $("body"), 
                    scrollPosition = $("body").scrollTop(),
                    pageSize = $("body").height(),
                    windowSize = $(window).height(),
                    fullScroll = (pageSize) - windowSize;
                    percentageScrolled = (scrollPosition / fullScroll);

                    var entries = $("#whispers-list > li").length;

                    // Set position of distance counter
                    $('div#distance').css('margin-top', ($("#whispers-list").height()+$("#latest-whisper").height()+33)*percentageScrolled);

                    // Update distance counter
                        $('#distance-travelled').text(Math.round(distanceTravelled*(1-percentageScrolled)));            
                        $('#whispers-list li').each(function(index) {

                                //highlight adjacent whispers                               
                                if ($('#whispers-list li:nth-child('+(index+1)+')').offset().top >= $('#distance').offset().top && $('#whispers-list li:nth-child('+(index+1)+')').offset().top <= $('#distance').offset().top + $('#distance').height()) {
                                    // alert("yup");
                                    $('#whispers-list li:nth-child('+(index+1)+') ul').fadeTo(1, 1);
                                } else {
                                    $('#whispers-list li:nth-child('+(index+1)+') ul').fadeTo(1, 0.5);  
                                }
                              });               

                    });

Ценю любую помощь или совет!

1 Ответ

1 голос
/ 17 апреля 2010

Обновлены!

Кажется, что $("body").scrollTop() всегда возвращает 0, что, я полагаю, является проблемой.

Но когда я попробовал $ ("html"). ScrollTop (), он, похоже, возвращает правильный scrollTop.

Попробуйте изменить строку scrollPosition на это:

scrollPosition = $("html").scrollTop(), 
...