以下代码检查页面是否有滚动条。如果没有,那么它会找到前三个div,其中包含“result”和“hidden”类,并删除“隐藏”类:
$(window).load(function() {
if ($(window).height() >= $(document).height()) {
$(".result.hidden").slice(0, 3).removeClass('hidden');
}
});
这工作正常但是我需要代码继续检查是否没有滚动条,如果没有从“结果”类中删除接下来的3个元素中的“隐藏”类。当没有更多类的元素,或者已经显示滚动条现在在浏览器中时,应该停止。
我试过使用while和do命令但是这显示了所有的div。我认为这是因为while条件只检查一次,而不是在显示更多元素之后。我怎样才能每次都重新检查一次?
$(window).load(function() {
do {
$(".result.hidden").slice(0, 3).removeClass('hidden').find('img').each(showImg);
}
while ($(window).height() >= $(document).height()) {
}
});
答案 0 :(得分:1)
使用while
,您可能陷入无限循环。 while
循环永远执行,只要条件为真,并且计算机可以处理它。换句话说,它会冻结您的代码和浏览器,直到条件为假并且循环中断。
使用while
每隔50或100毫秒检查一下您的情况,而不是连续的setInterval
指令:
setInterval( function(){
if ($(window).height() >= $(document).height()) {
$(".result.hidden").slice(0, 3).removeClass('hidden');
}
}, 100);
答案 1 :(得分:0)
你可能只是想听一下窗口调整大小事件,我会做这样的事情......
function checkForScrollBars () {
if ($(window).height() >= $(document).height()) {
$(".result.hidden").slice(0, 3).removeClass('hidden');
}
}
$(window).load(function() {
checkForScrollBars();
});
$(window).on('resize', function(e) {
checkForScrollBars();
});