0

私は想像できるすべてを試しましたが、これを機能させることはできません...私はここでフィドルを作成しました: http://jsfiddle.net/DftyD/3/ (そこでは機能しません)

マウスオーバー時にムーブ関数を常に実行したい (マウスムーブで実行すると、クリック時にギャラリーのサイズが変更されるときに問題が発生する)

cont.bind('mouseenter', function() {
    active = setInterval(moveit, 20);  // WHAT IS WRONG HERE?
        }).bind('mouseleave', function(){
    active && clearInterval(active);
});

function moveit(e) {
    var windowHeight = $(window).height();
    var contWidth = cont.width();
    var galWidth = lastImg[0].offsetLeft + lastImg.outerWidth();
    var left = (e.pageX - cont.offset().left) * (galWidth - contWidth) / contWidth;
    cont.scrollLeft(left);
};

私はjqueryが初めてなので、私のコードは少し面倒です。私の問題を理解していただければ幸いです。

ありがとうございました :)

4

1 に答える 1

0

そのようにする場合e.pageXは、イベントを渡す必要があります。それ以外の場合は、内部で未定義moveit()です:

var active;

cont.on({
    mouseenter : function(event) {
        active = setInterval(function() {
            moveit(event);
        }, 20);
    },
    mouseleave: function(){
        clearInterval(active);
    }
});

もちろん、e.pageXマウスが要素に入ったときと同じ値になります。間隔の反復ごとに更新されないため、1回だけ移動します。

フィドル

于 2013-04-06T19:14:46.093 に答える