0

我正在使用在这里找到的平滑滚动插件nicescroll

我遇到的第一个问题是它将自己设置为“静态 html 高度”。这对我不起作用,因为我的文档正在加载窗口加载项目。所以我添加了一个我发现的脚本:

    $(window).load(function () {

        function getDocHeight() {
    var D = document;
    return Math.max(
        Math.max(D.body.scrollHeight, D.documentElement.scrollHeight),
        Math.max(D.body.offsetHeight, D.documentElement.offsetHeight),
        Math.max(D.body.clientHeight, D.documentElement.clientHeight)
    );
}
$('html').height(getDocHeight());

即使在加载了所有动态项目后,此脚本也允许更改 HTML 高度,所以现在我的平滑滚动又可以工作了。

但现在我面临另一个问题,因为我在单击按钮时加载项目,从而再次更改文档。这次我上面的脚本不起作用,所以我把函数放在点击事件中:

$(".button").live("click", function(){


        function getDocHeight() {
    var D = document;
    return Math.max(
        Math.max(D.body.scrollHeight, D.documentElement.scrollHeight),
        Math.max(D.body.offsetHeight, D.documentElement.offsetHeight),
        Math.max(D.body.clientHeight, D.documentElement.clientHeight)
    );
}
$('html').height(getDocHeight());


});

这似乎对我不起作用。那么如何在单击事件后获取和设置(更改)文档高度?

4

1 回答 1

1

尝试使用 .on 而不是 .live。.live 已弃用,请查看 jQuery 文档了解更多信息。

此外,您无需在 .on 处理程序内重新添加 /function/ ......将其放在 .on 代码之外,因此您不会每次都在处理程序内重新构建函数!

因此,您的代码将类似于:

function getDocHeight() {
    var D = document;
    return Math.max(
        Math.max(D.body.scrollHeight, D.documentElement.scrollHeight),
        Math.max(D.body.offsetHeight, D.documentElement.offsetHeight),
        Math.max(D.body.clientHeight, D.documentElement.clientHeight)
    );
}

$("some .element above .button").on("click", ".button", function(){
    // put your click handler in here, to adjust the doc height
    $('html').height(getDocHeight());
});

我很确定必须有一种更简单的方法来直接从 jQuery 获取文档高度,所以你甚至可能根本不需要你的 getDocHeight() 函数。看http://api.jquery.com/height/

于 2012-10-22T15:56:49.603 回答