滚动条一直置于页面底部,开发聊天。但发现js可以 ,jquery不行。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta name="keywords" content="滚动条, scrollbar, 页面底部, 聊天窗口, " />
<meta name="description" content="有些时候(如开发聊天程序),我们需要将将滚动条(scrollbar)保持在最底部,比如聊天窗口,最新发出和收到的信息要显示在最下方,如果要看到最下方的内容,就必须保证滚动条保持在最底部。" />
<title>将滚动条(scrollbar)保持在最底部的方法 - 滚动条, scrollbar, 页面底部, 聊天窗口, </title>
</head>
<body>
<div id="example">
<h3 id="example_title">将滚动条(scrollbar)保持在最底部的方法</h3>
<div id="example_main">
<!--************************************* 实例代码开始 *************************************-->
<script type="text/javascript">
function add()
{
var now = new Date();
var div = document.getElementById('scrolldIV');
div.innerHTML = div.innerHTML + 'time_' + now.getTime() + '<br />';
div.scrollTop = div.scrollHeight;
}
</script>
<span class="notice">请点击“插入一行”按钮,插入最新信息,当出现滚动条时,滚动条将自动保持在底部。</span><br />
 
<div id="scrolldIV" style="overflow:auto; height: 100px; width: 400px; border: 1px solid #999;">
</div>
<input type="button" value="插入一行" onclick="add();">
<!--************************************* 实例代码结束 *************************************-->
</div>
</div>
</body>
</html>

以上的js可以让div滚动条保持最底部
然后我用juery重新写了一个。

<script src="js/jquery-1.11.3.js"></script>

<div id="example">

<h3 id="example_title">将滚动条(scrollbar)保持在最底部的方法</h3>
<div id="example_main">
    <!--************************************* 实例代码开始 *************************************-->

    <span class="notice">请点击“插入一行”按钮,插入最新信息,当出现滚动条时,滚动条将自动保持在底部。</span><br />

    <div id="scrolldIV" style="overflow:auto; height: 100px; width: 400px; border: 1px solid #999;">
    </div>
    <input type="button" value="插入一行" id="sr">
    <!--************************************* 实例代码结束 *************************************-->
</div>

</div>


<script>
    $("#sr").click(function(){
        var now=new Date();
        var div=$("#scrolldIV");
        div.append(now.toLocaleString()+"</br>");
        div.scrollTop = div.scrollHeight; //这块怎么不转了?
    });
</script>

然后我用jquery手册查了一下scrollTop和scrollHeight都是jquery写法啊
这是为什么不能让jquery方法滚动条一直置于页面底部呢?
http://jsbin.com/nibiwayuga/edit?html,js 在线demo.

阅读 10.1k
3 个回答
div.scrollTop = div.scrollHeight; 

是原生的写法
jquery进入选择器以后dom节点变成一个列表
要写成

div[0].scrollTop = div[0].scrollHeight; 

div.scrollHeight一直都是undefined,因为div现在已经是jquery对象了

div.scrollTop = div.scrollHeight;
改为
div.scrollTop(div[0].scrollHeight);

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏