slideToggle仅在IE8中调用了两次

时间:2014-03-06 10:40:55

标签: jquery

我有一个在页面底部到达时向上/向下滑动的页脚,问题是在IE8中由于某种原因被调用了两次。

我可以强制每页滚动一次吗?

$(window).scroll(function() {
       if($(window).scrollTop() + $(window).height() == $(document).height()) {
           // $('.footer .open').click();
           $('#page-footer').slideToggle();
           console.log('log');
       }
});

3 个答案:

答案 0 :(得分:0)

试试这个我希望能帮到你

$(window).unbind('scroll').scroll(function() {
       if($(window).scrollTop() + $(window).height() == $(document).height()) {
           // $('.footer .open').click();
           $('#page-footer').slideToggle();
           console.log('log');
       }
});

答案 1 :(得分:0)

我认为这是因为当你滑动时,由于动画,窗口会再次滚动。你可以在页脚中添加一个类,当你滑动时,你可以检查它是否有那个类,它不应该是slideToggle,因为它已经完成了。

$(window).scroll(function() {
   if($(window).scrollTop() + $(window).height() == $(document).height() && !$('#page-footer').hasClass('do-once')) {
       // $('.footer .open').click();
       $('#page-footer').addClass('do-once').slideToggle();
       console.log('log');
   }
});

答案 2 :(得分:0)

很难模仿JSFiddle中的屏幕滚动(因为它显示在一个框架中),但这应该表明我的意思:

JSFiddle:http://jsfiddle.net/TrueBlueAussie/uhAhZ/2/

忽略模仿文档和窗口的黑客攻击,您只想根据屏幕边缘的距离来调用slideUpslideDown。冗余地再次调用它们很少,所以可以调用每个卷轴。

$('#content').scroll(function () {
    if ($(window).scrollTop() + $(window).height() > $(document).height()) {
        $('#page-footer').slideDown();
        console.log('log');
    }
    else
    {
        $('#page-footer').slideUp();
    }
});

注意:>可能需要>=,但我无法在JSFiddle中正确测试它,因为它需要是JSFiddle的完整浏览器,我将它入侵了一下:)