2017-10-30 10 views
0

という属性を持つdivがあります。今、私はscrollイベントのjQueryコードを書いています。コンテンツをスクロールするとうまく動作します。しかし、scrollTopがの場合、実際にスクロールしているときにのみscrollイベントが機能するため、動作しません。scrollTopが0の場合、ユーザーを検出する方法はdivコンテンツをスクロールしていますか?

scrollTopが0に設定された後でもユーザーがまだスクロールしていることを検出する方法はありますか?

$("#nbody").on("scroll", function(){ 
     if(this.scrollTop === 0) { 
     //this works only when scrollTop changes from 0+n value. 
     } 
}); 

答えて

0

コードの下に試してみてください:ボトム用
:トップ用

jQuery(
 
    function($) 
 
    { 
 
    $('#nbody').bind('scroll', function() 
 
           { 
 
           if($(this).scrollTop() + $(this).innerHeight()>=$(this)[0].scrollHeight) 
 
           { 
 
            alert('end reached'); 
 
           } 
 
           }) 
 
    } 
 
);
#nbody{width:200px;height:150px;overflow:auto;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="nbody"> 
 
Lorem ipsum dolor sit amet <br> 
 
Consectetuer augue nibh lacus at <br> 
 
Pretium Donec felis dolor penatibus <br> 
 
Phasellus consequat Vivamus dui lacinia <br> 
 
Ornare nonummy laoreet lacus Donec <br> 
 
Ut ut libero Curabitur id <br> 
 
Dui pretium hendrerit sapien Pellentesque <br> 
 

 
</div>

var el = $('.test'); 
 

 

 

 
el.on('scroll', function(){ 
 
    
 
    if(el.scrollTop() == 0){alert("hit the top")} 
 
    
 
    
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="test" style="height:100px;width:70px;overflow:auto"> 
 
    sadfsadf 
 
    saf 
 
    sadf 
 
    saf 
 
    s 
 
    af 
 
    saf 
 
    saf 
 
    sadf 
 
    sadfsafsafsaf 
 
    sadfsaf 
 
    
 
    sadfsafsadf 
 
    
 
    sadfsaf 
 
    sa 
 
    dfsa 
 
    fsadf 
 
</div>

+0

を好むどのように私は、これは何も解決しない... OPは、ユーザーがバックのdivのトップに来るとき、スクロールを検出したい怖いです。 –

+0

@Philicare私は私の答えを変更してください、私に知らせてください。ありがとう –

+0

あまりにも簡単な問題を解くと、@Ashish。 OPは負の値を望んでいます。ユーザーがトップ(トップからボトムまで)に移動してもスクロールします(なぜ私にはわからないのですか)。 –

1

あなたはいくつかのオプションを検討することができます

  1. はonWheelコールバック(https://www.w3schools.com/jsref/event_onwheel.asp)を使用します。 = 8
  2. これをエミュレートする第三者のライブラリを探してください
  3. 隠しdivといくつかのCSSを使用して、そこにあるすべてのスクロールをキャッチします。それはあなたにいくつかの微妙な変化をもたらすでしょう。あなたはあなたが私のコードでは、実際のユーザーエクスペリエンス のGETスクロール遅延のような追加的な方法でそれを行うことができ、それは250に設定されていますが、置き換えることができます> 0
0

何かにdiv要素のscrollTopスプライトを設定するためにJavaScriptを使用することができますあなたは

$(".someDiv").scroll(function() { 
var th = this; 
var scrollDelay = 250; 
clearTimeout($.data(this, 'scrollTimer')); 

$.data(this, 'scrollTimer', setTimeout(function() { 
    // do something 
    if (th.scrollTop === 0) { 
      //this works only when scrollTop changes from 0+n value. 
     console.log(555); 
     } 
}, scrollDelay)); 
}); 

see example

関連する問題