按住鼠标按钮的Jquery自动增量css属性

时间:2012-01-29 11:04:42

标签: javascript jquery mouseevent

我正在努力创建一个功能,当有人按下并“按住”按钮时,该功能会继续增加元素的css属性。

类似的东西:

var timeoutId = 0;

$('#left').mousedown(function() {
    timeoutId = setTimeout(myFunction, 1000);
}).bind('mouseup mouseleave', function() {
    clearTimeout(timeoutId);
});

function myFunction() {
 var left = parseInt($("#menuElem").css('left')) + 10;
 $("#menuElem").animate({
    'left' : left + 'px'
 });

}

我希望myFunction一次又一次地重复,直到mouseup或mouseleave事件被触发为止。

欢呼声

1 个答案:

答案 0 :(得分:2)

根据this SO question,您无法检测到键的当前上升或下降状态,只监视相应的事件。

所以你需要这样的东西我猜

var mouseIsDown = false;

$('#button').mousedown(function(){
    mouseIsDown = true;
    incrementValue;
});

$('#button').mouseup(function(){
    mouseIsDown = false;
});

然后让这个功能完全像:

function incrementValue() {
    whatever++;
    if(mouseIsDown){
        setTimeout("incrementValue()", 20);
    }
}

在鼠标按下时,mouseIsDown var设置为true,它会启动一个继续递增的循环(在setTimeout()中设置time参数的任何时间间隔),直到{{1} }是false,在mouseup上发生。