我正在使用这里找到的平滑滚动插件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高度,所以现在我的平滑滚动再次起作用。
但现在我面临另一个问题,因为我只需点击按钮就可以加载项目,从而再次更改文档。这次我的上面的脚本不起作用,所以我把这个函数放在click事件中:
$(".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());
});
这对我来说似乎不起作用。那么如何在点击事件后获取和设置(更改)文档高度?
答案 0 :(得分: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/