2011-07-27 60 views
1

我已將我的代碼寫入here根據滾動條位置保持div的滾動位置

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/

回答

3

我覺得這是你以後在做什麼?

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

代碼:

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

平原舊JavaScript的滾動值:

var scrollVal = myDivElem.scrollTop; 
+0

右鍵,告訴我在哪裏滾動條是在像素方面,但如果它是在底部。 – Incognito

+0

就像if(scrollVal == document.getElementById(DivID).style.height) –

0

試試這個

var $this; 
    $('#container').scroll(function(){ 
    $this = $(this); 
    if ($this.scrollTop() > $this.height()){ 
     //Do something here 
    } 
}); 
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() 
); 
+0

Ahhhh,這就是訣竅....'$(「#smallBox」)。height()+ $(「#smallBox 「)獲得()[0] .scrollTop' – Incognito