jQuery matchHeight maintainScroll无法正常工作

时间:2014-12-09 14:36:29

标签: javascript jquery

我一直在为我网站上的一些元素使用jQuery matchHeight。如果需要,我可以触发更新:

$.fn.matchHeight._update();

我的问题是我放松了滚动位置。有$.fn.matchHeight._maintainScroll = true;我已经设置在函数的顶部,我将其称为matchHeight。并且连接到我的Slider onChange函数我得到了更新,就像这样;

$('#reviews-slider').owlCarousel({
        loop: true,
        margin: 0,
        nav: false,
        lazyLoad : true,
        items: 1,
        dots: true,
        autoHeight:true,
        itemElement: 'blockquote',
        dotsSpeed: 400,
        autoplay: false,
        onChanged : function () {
            $.fn.matchHeight._update();
        }
    });

有没有人知道我做错了什么以及为什么我保持滚动似乎不起作用。是否可以与_update一起调用?我确实尝试将其置于更改功能中,但这仍然无效。

我希望使用维护滚动的原因是因为当我触发更新时,内容可能会相当长并导致页面位置跳转。 git页面底部有一个注释,但是我似乎无法使它工作。

1 个答案:

答案 0 :(得分:0)

在ajax调用后出现同样的问题我的页面跳了起来。 似乎考虑了选项_maintainScrollPosition,但由于bug或"特色错误" $(window).scrollTop()在webkit浏览器中始终为0。

导致此问题的库代码:

// take note of scroll position
var scrollTop = $(window).scrollTop(), // seems to be 0 most of the time 

// ***

// restore scroll position if enabled
if (matchHeight._maintainScroll) {
    $(window).scrollTop((scrollTop / htmlHeight) * $('html').outerHeight(true));
}

我们都知道如何乘以0看起来像。

解决方案

不幸的是,这是一个激烈的CSS更改,您可以从html和body标签中删除height: 100%。 例如,当您处理溢出容器时,身体上的overflow: hidden也会失败。