0

次の問題。inview.jsを使用してビューポートにある場合、すべてのdivにクラスを追加する長いスクロールページがあります

var $div1 = $('#div1');
var $div2 = $('#div2');
//.....
var only_once = 0;

$('#div1, #div2, #div3, #div4, #div5').bind('inview', function (event, visible) 
{
    if (visible == true) {
        $(this).addClass("inview");
    } else {
        $(this).removeClass("inview");
    }
});

いくつかのイベントを実行するクラス im を追加すると、inview が最初に起動されてから停止した場合に何かが発生する if 条件が追加されます。only_onceを1に切り替えて試してみました。

if($div1.hasClass("inview")){   
    // here some functions...

    if (only_once == 0) {
        $('.float-second').css('left', 0);
        $('.float-second').css('top', 0);
        only_once = 1;
    } 

    if($div2.hasClass("inview")){   
        // here some functions...


        if (only_once == 1) {
            $('.float-third').css('left', 0);
            $('.float-third').css('top', 0);
            only_once = 2;
        } 
        // and this for the other divs too

問題は、私がこのようにすると、サイトが中央または下部にロードされたときに起動せず、if条件が前の値のために最初のイベントを必要とするため、上下にスクロールすることです。私の主張を理解していただければ幸いです。どうすればこの作業をうまく行うことができますか?

4

1 に答える 1

0

私はあなたが抱えている問題を理解していると思います。次を使用して、ページがどれだけスクロールされたかを確認できます。

$(document).scrollTop();

呼び出す必要がある関数を呼び出すことができると判断した値よりも大きい場合、それ以外の場合はページの上部に読み込まれる場合、プラグインがそれを行います。

于 2013-02-10T20:56:13.790 に答える