簡體   English   中英

根據滾動條位置保持div的滾動位置

[英]Maintain scroll position for a div based on scroll bar position

我在這里寫了我的代碼。

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/

我想這就是你要追求的?

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

碼:

var alreadyScrolled = $("#smallBox")[0].scrollTop + $("#smallBox").height() == $("#smallBox")[0].scrollHeight;

拿走你的代碼並進行小的修改。 不能說它是否是好的代碼,但它的工作原理

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()
);

普通的舊javascript滾動值:

var scrollVal = myDivElem.scrollTop;

嘗試這個

var $this;
  $('#container').scroll(function(){
    $this = $(this);
    if ($this.scrollTop() > $this.height()){
       //Do something here
    }
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM