我正在努力创建一个功能,当有人按下并“按住”按钮时,该功能会继续增加元素的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事件被触发为止。
欢呼声
答案 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上发生。