0

我在使用 jQuery将 div 滚动到底部时遇到问题。

分区

HTML:

<div id="chatbox"></div>

CSS:

    #chatbox {
    width:300px;
    height:400px;
    background:grey;
    overflow-x:hidden;
    overflow-y:auto;
    border-radius: 10px;
    background: #045671;
}

当我使用 onclick -> $("#chatbox").scrollTop(9999) 滚动到底部时,问题出现在再次单击后滚动向上 +20px。

例子 :http://46.238.10.232:10001/chat/

4

3 回答 3

2

如果您过度设置scrollTop,就会发生魔术(或不会,取决于您的期望)。设置scrollTop为 9999 将scrollTop根据需要将 设置为 0 到 9999 之间的任意数字。您也可以read scrollTop,因此将其设置为x并不意味着它将保持不变x,它将是实际位置,因此如果您有兴趣查询该值,它仍然是有意义的。

如果元素的内容发生变化,则必须重新设置scrollTop。通常 toscrollHeight总是足够的(是的,您可以尝试scrollTop完美准确地计算,但为什么要麻烦?让浏览器进行计算,然后重新开始工作)。

所以我想,当你“再次点击”(无论是什么)时,你正在向你的聊天框添加更多内容。是的?然后你必须再次设置scrollTop


如果你每次设置scrollTop,你可能做得太早了。您应该在修改元素的内容之后执行此操作,而不仅仅是响应onclick事件。

于 2012-07-13T08:12:06.097 回答
0

<a>标签可能会起作用。我知道它很丑陋,但是使用 css 您可以将其设置为普通文本或完全隐藏它。

  1. 将自定义元素放置在您要滚动到的位置。
  2. 将其 id 设置为 (例如) scrollelement
  3. 设置window.location.hash为“滚动元素”。

归功于李 Kowalkowski。

于 2012-07-13T08:13:40.713 回答
0
$(document).scrollTop($("#chatbox").position.top+$("#chatbox").height());
于 2012-07-13T08:04:58.660 回答