3

ユーザーがdiv全体をスクロールしたかどうかを検出できるようにしたいのですがoverlfow:scroll; 、divが水平であるため、offset().topここでは使用できません。
私は現在、このコードを持っています:

var elem = $('#slide');
var inner = $('#slidecontain');
if ( Math.abs(inner.offset().top) + elem.height() + elem.offset().top >= inner.outerHeight() ) {
  alert('bottom')
}

これは、いつ下までスクロールしたかを確認するのに完全に機能しますが、水平スクロールであるため、すぐに起動します。どうすればこれを切り替えることができますか? 可能性はoffset().leftありますか?

これがhtmlで、かなり基本的です:

<div id="slide" style="width: 300px; height: 150px;">
        <div id="slidecontain" style="width: 900px; height: 150px;">
            <div class="slide1" style="width: 300px; height: 150px;"></div>
            <div class="slide2" style="width: 300px; height: 150px;"></div>
            <div class="slide3" style="width: 300px; height: 150px;"></div>
        </div>
<div>
4

2 に答える 2

3

jQueryを使用して簡単に実行できます.scrollLeft()

var elem = $('#slide');
var inner = $('#slidecontain');

elem.scroll(function() {
   if(elem.scrollLeft() + elem.width() == inner.width()) {
       alert("reached end!");
   }
});

これをシミュレートするフィドルがあります。

于 2013-10-09T18:41:31.440 に答える
0

ここで使用できる jQuery には.scrollLeft()というメソッドがあります。しかし、逆の方法で。

@Merianos Nikos から提供された、このJSFiddleを見つけた実用的な例を探しています

使い方?

HTML:

<div class="inner">
    <div id="long"></div>
</div>

JS:

jQuery(document).ready(function ($) {
    var lastLeftLocation = 0;
    $('.inner').scroll(

    function (e) {
        if (lastLeftLocation > $(this).scrollLeft()) {

        } else {
            console.log("moved to right");
        }
        lastLeftLocation = e.currentTarget.scrollLeft;
    });
});

ここにjsfiddle2の簡易版があります

参考までに:逆の方法はありません.scrollRight();)

お役に立てれば。

于 2013-10-09T18:23:10.827 に答える