2

我在这里写了我的代码。

setInterval(
    function (data){
        var alreadyScrolled = $("#smallBox").height() >= $("#smallBox").get()[0].scrollHeight;
        
        
        $("#smallBox").append(data + "<br />");
        if (alreadyScrolled) {
            $("#smallBox").scrollTop($("#smallBox").heightoffsetHeight)
        }
    },
    1000, 
    Date()
);


<div id="largeBox">
    <div id="smallBox">
    </div>
    <input />
</div>

我想要做的是,检测滚动条是否在窗口的底部,如果是,将新数据附加到 div 中,然后向下滚动到底部。如果滚动条尚未位于底部,则什么也不做。

我不确定我可以使用 DOM 或 jquery API 的哪些部分来完成此操作,我一直在尝试多种事情并且有点卡在这里,就滚动条的位置而言,似乎没有什么能给我一个价值,以及我可以滚动多少。如果我能得到这个百分比值会很棒。

我不想使用 jQuery 之外的任何库,这意味着也没有插件。

我希望获得我们在 SO 聊天室中看到的相同行为,只是它似乎使用 ScrollTo 插件来完成它的工作。

更新。

我不能只使用 .height() 和 .scrollTop,它们不匹配。

看到这个:http: //jsfiddle.net/qSx3M/6/

4

4 回答 4

4

我想这就是你所追求的?

http://jsfiddle.net/qSx3M/7/

代码:

var alreadyScrolled = $("#smallBox")[0].scrollTop + $("#smallBox").height() == $("#smallBox")[0].scrollHeight;
于 2011-07-27T20:09:56.970 回答
1

拿了你的代码并做了一些小的修改。不能说它是否是好的代码,但它可以工作

setInterval(
    function (data){
        var alreadyScrolled = $("#smallBox").height() + $("#smallBox").get()[0].scrollTop >= $("#smallBox").get()[0].scrollHeight;

        console.log(alreadyScrolled);

        $("#smallBox").append(data + "<br />");
        if (alreadyScrolled) {
            $("#smallBox").get()[0].scrollTop = $("#smallBox").get()[0].scrollHeight;
        }
    },
    1000, 
    Date()
);
于 2011-07-27T20:12:22.110 回答
0

普通的旧 javascript 滚动值:

var scrollVal = myDivElem.scrollTop;
于 2011-07-27T19:57:32.290 回答
0

试试这个

var $this;
  $('#container').scroll(function(){
    $this = $(this);
    if ($this.scrollTop() > $this.height()){
       //Do something here
    }
});
于 2011-07-27T20:03:38.767 回答