在jquery中为setInterval添加自定义函数

时间:2013-04-06 19:09:08

标签: jquery

我尝试了所有我能想象到的东西,但是我无法让它发挥作用......我在这里创造了一个小提琴:http://jsfiddle.net/DftyD/3/(它不在那里工作)

我想在mouseover上不断执行我的moveit-function(如果我在mousemove上执行它,我在画廊调整大小时会出现问题)

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的新手,所以我的代码有点麻烦。希望你能理解我的问题,也许可以帮助我。

谢谢你:)

1 个答案:

答案 0 :(得分:0)

您需要以这种方式传递事件,否则e.pageX内的moveit()未定义:

var active;

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

当然,这会使e.pageX的值与鼠标进入元素时的值相同,但每次间隔迭代都不会更新,因此它只会移动一次。

FIDDLE