jQuery 滚动到页面/iframe 的底部

jQuery Scroll to bottom of page/iframe

提问人:Adam 提问时间:12/12/2009 更新时间:11/17/2023 访问量:333499

问:

如何使用jquery向下滚动到iframe或页面的底部?

jquery scroll scrollto

评论


答:

38赞 Tatu Ulmanen 12/12/2009 #1

例如:

$('html, body').scrollTop($(document).height());

评论

0赞 Adam 12/12/2009
我似乎无法让它起作用。什么都不做。
0赞 Sonny Boy 12/12/2009
@adam 您使用的是哪个版本的jQuery?
372赞 Mark Ursino 12/12/2009 #2

如果你想要一个漂亮的慢速动画滚动,对于任何有这个的锚点,都会把你滚动到底部:href="#bottom"

$("a[href='#bottom']").click(function() {
  $("html, body").animate({ scrollTop: $(document).height() }, "slow");
  return false;
});

随意更改选择器。

评论

48赞 Tom 1/19/2010
这在 Firefox 3.5.7 中有效,但在 Chrome 4.0.295.0 中无效。以下在 Chrome 中有效: $('html, body').animate({scrollTop: $(document).height()}, 'slow');
1赞 Muhammad Gelbana 8/10/2014
@Tom,我无法发现您的解决方案与 Mark 的解决方案之间的区别!
4赞 Paul Parker 10/3/2014
@MuhammadGelbana检查编辑日期。马克似乎更新了他的答案,包括汤姆的修复。
0赞 Michael Scheper 6/16/2017
实际上没有必要获取元素的高度:stackoverflow.com/a/44578849/1450294
216赞 Tom Bates 5/6/2011 #3

scrollTop() 返回从可滚动区域隐藏的像素数,因此给出:

$(document).height()

实际上会超过页面底部。要使滚动实际上“停止”在页面底部,需要减去浏览器窗口的当前高度。如果需要,这将允许使用缓和,因此它变为:

$('html, body').animate({ 
   scrollTop: $(document).height()-$(window).height()}, 
   1400, 
   "easeOutQuint"
);

评论

30赞 Christian 7/5/2011
这应该是公认的答案,汤姆是绝对正确的,接受的答案效果不佳,因为滚动会突然停止而不是处理缓动的结束。
34赞 newenglander 5/31/2012
注意:需要一个插件,jQuery本身只有和。easeOutQuintlinearswing
0赞 Jesse Head 2/14/2013
伙计,这是好东西!谢谢。即使用“swing”而不是“easeoutquint”来做到这一点,也显示出明显的差异。
0赞 xaxxon 5/8/2015
不确定这是否是糟糕的形式,但我编辑了已接受的答案以添加指向此答案的指针。如果是,那么有人可以恢复它。
0赞 VKK 1/6/2017
仅当页面以标准的兼容模式进行解释时,此解决方案才有效。例如,如果您在 Chrome 上不包含 ,Chrome 将返回完全相同的窗口和文档高度值,在这种情况下,将始终返回 0。看这里: stackoverflow.com/questions/12103208/...<!DOCTYPE html>$(document).height()-$(window).height()
15赞 Greg Pettit 9/30/2011 #4

在这个线程没有满足我的特定需求(在特定元素内滚动,在我的情况下是文本区域)之后,我在伟大的超越中发现了这一点,这可能对阅读此讨论的其他人有所帮助:

planetcloud上的替代方案

由于我已经有 jQuery 对象的缓存版本(下面的代码中是 jQuery 对象),因此我添加到事件处理程序中的代码就是这样:myPanel

myPanel.scrollTop(myPanel[0].scrollHeight - myPanel.height());

(感谢 Ben)

评论

1赞 gregn3 6/16/2015
用 div 为我工作:var d = $('#mydiv'); d.scrollTop (d[0].scrollHeight - d.height ());
0赞 Michael Scheper 6/16/2017
你真的需要做数学吗?stackoverflow.com/a/44578849/1450294
2赞 MountainRock 11/8/2012 #5

这个对我有用:

var elem = $('#box');
if (elem[0].scrollHeight - elem.scrollTop() == elem.outerHeight()) {
  // We're at the bottom.
}

评论

0赞 huyz 5/1/2013
这并不能回答这个问题
4赞 Rory O'Kane 9/21/2013 #6

一个简单的功能,可以跳转到(立即滚动)到整个页面的底部。它使用内置的 .scrollTop()。我还没有尝试调整它以使用单个页面元素。

function jumpToPageBottom() {
    $('html, body').scrollTop( $(document).height() - $(window).height() );
}

评论

2赞 Jacklynn 1/22/2014
我不知道为什么,但这在 Firefox 26.0 上对我不起作用,并且在运行此功能时会滚动到顶部。这个问题通过以下方式得到解决$(document).scrollTop($(document).height());
0赞 Ilia Ross 10/23/2016 #7

前面的回答中提到的脚本,例如:

$("body, html").animate({
    scrollTop: $(document).height()
}, 400)

$(window).scrollTop($(document).height());

Chrome 中不起作用,如果 CSS 中的标签设置了属性,则在 Safari 中会跳跃。我花了将近一个小时才弄清楚。htmloverflow: auto;

4赞 Michael Scheper 6/16/2017 #8

如果你不关心动画,那么你就不必得到元素的高度。至少在我尝试过的所有浏览器中,如果你给出的数字大于最大值,它就会滚动到底部。因此,请尽可能给它一个最大的数字:scrollTop

$(myScrollingElement).scrollTop(Number.MAX_SAFE_INTEGER);

如果你想滚动页面,而不是一些带有滚动条的元素,只需等于'body, html'。myScrollingElement

由于我需要在几个地方执行此操作,因此我编写了一个快速而脏的jQuery函数来使其更方便,如下所示:

(function($) {
  $.fn.scrollToBottom = function() {
    return this.each(function (i, element) {
      $(element).scrollTop(Number.MAX_SAFE_INTEGER);
    });
  };
}(jQuery));

因此,当我附加一个 buncho' 东西时,我可以这样做:

$(myScrollingElement).append(lotsOfHtml).scrollToBottom();
1赞 Александр Лиссов 6/15/2020 #9
$('.block').scrollTop($('.block')[0].scrollHeight);

当新消息到达时,我使用此代码滚动聊天。

评论

0赞 Bruno Monteiro 6/15/2020
请为您的代码提供一些解释,尤其是当您从自己的代码库复制时,使用与其他人无关的 CSS 类;)
0赞 Александр Лиссов 6/15/2020
用滚动条获取任何块;或整个文档。
0赞 Roberto Mutti 11/17/2023 #10

粗略模式(无滚动)

$("body, html").stop().animate({ scrollTop: 9999999 }, 0);

评论

0赞 Jeremy Caney 11/18/2023
感谢您有兴趣为 Stack Overflow 社区做出贡献。这个问题已经有了不少答案,包括一个已经得到社区广泛验证的答案。你确定你的方法以前没有给出过吗?如果是这样,解释一下你的方法有何不同,在什么情况下你的方法可能更受欢迎,和/或为什么你认为前面的答案是不够的,这将是有用的。你能编辑你的答案以提供解释吗?