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 に答える