0

我有这个功能,当用户距离窗口底部 500 像素时会触发一次点击。

一切正常,除非我在 css 中将我的 html 和 body 设置为 height:100%。

这是“工作”脚本。

$(document).ready(function() {
    var timeout = '';
    $(window).scroll(function (e) { 
        var intBottomMargin = 500; 
        clearTimeout(timeout);
        //if less than intBottomMargin px from bottom 
        if ($(window).scrollTop() >= $(document).height() - $(window).height() - intBottomMargin) {
          timeout = setTimeout(function(){ 
                $("#next-paginav")[0].click(); 
          }, 300);
        }
    });
});

当我的 html 和 body 是 100% 高度时,如何使相同的脚本工作?

我确信这真的很简单。

4

2 回答 2

0

我认为您的计算不正确:

if ($(window).scrollTop() >= $(document).height() - $(window).height() - intBottomMargin)

如果您的 body/html 是 100% 高度,则意味着您将其设置为视口的高度。你以前有浮动元素吗?这可能就是您(之前的)高度计算有效的原因

试试这个:

if ($(window).scrollTop() >= $(document).height() - intBottomMargin)
于 2013-04-02T22:35:16.833 回答
-1

您正在滚动的不是window因为bodyhtml设置为与窗口相同的大小,因此窗口没有溢出需要一个 scollbar

滚动条是 body 的一部分,因为它有溢出内容。将 scoll 处理程序绑定到 body 并且它可以工作

 var $scollEl=$('body').scroll(function (e) { 
        var intBottomMargin = 500; 
        clearTimeout(timeout);
        //if less than intBottomMargin px from bottom 

        if ($scollEl.scrollTop() >= $(document).height() - $scollEl.height() - intBottomMargin) {
          timeout = setTimeout(function(){ 
                $(".clicked").click(); 
          }, 300);
        }
    });
});

演示:http: //jsfiddle.net/LnmsR/2/

于 2013-04-02T23:12:39.640 回答