gpt4 book ai didi

javascript - jQuery - mousedown - 一段时间后做事并重复直到 mouseup

转载 作者:行者123 更新时间:2023-11-30 16:51:57 25 4
gpt4 key购买 nike

我有这个代码。它是谷歌地图 api 上的动画汽车图标。

$("#p_inc").mousedown(function () {
if(mouseDownAnim) clearInterval(mouseDownAnim);
moveCar();
mouseDownInc = true;
this.timer = setTimeout(function(){
if(mouseDownInc){
mouseDownAnim = setInterval(function () {
moveCar();
}, 150);
}
else{
if(mouseDownAnim) clearInterval(mouseDownAnim);
}
},200);
})

$("#p_dec").mousedown(function () {
backCar();
if(mouseDownAnim) clearInterval(mouseDownAnim);
mouseDownDec = true;
this.timer = setTimeout(function(){
if(mouseDownDec){
mouseDownAnim = setInterval(function () {
backCar();
}, 150);
}
else{
if(mouseDownAnim) clearInterval(mouseDownAnim);
}
},200);
});

$(document).on('mouseup',function(){
mouseDownInc = false;
mouseDownDec = false;
clearInterval(mouseDownAnim);
});

我期待什么?当我点击按钮时 moveCar() 应该触发一次,但是当我点击并按住按钮时 - moveCar() 应该触发一次,等待 200 毫秒,之后应该每 150 毫秒重复一次 moveCar() 直到我做 mouseup。它正在工作,但有时 setInterval 堆栈,我无法停止它。 bug在哪里?

JSFIDDLE:https://jsfiddle.net/2hbkrs6m/

最佳答案

工作代码

<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="content-type">
<title>- jsFiddle demo</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js" type="text/javascript"></script>
<link href="/css/result-light.css" type="text/css" rel="stylesheet">
<style type="text/css"></style>
<script type="text/javascript">
$(function(){
var mouseDownInc = false;
var mouseDownDec = false;
var mouseDownAnim = null;

$("#p_inc").mousedown(function (event) {
if(mouseDownAnim) clearInterval(mouseDownAnim);
moveCar();
mouseDownInc = true;
if(mouseDownInc){
mouseDownAnim = setInterval(function () {
moveCar();
}, 150);
}
});

$("#p_dec").mousedown(function (event) {
if(mouseDownAnim) clearInterval(mouseDownAnim);
backCar();
mouseDownDec = true;
if(mouseDownDec){
mouseDownAnim = setInterval(function () {
backCar();
}, 150);
}
});

$(document).on('mouseup',function(){
mouseDownInc = false;
mouseDownDec = false;
clearInterval(mouseDownAnim);
});

function moveCar(){console.log("movecar")
}
function backCar(){console.log("backcar")
}
});

</script>
</head>
<body>
<button id="p_inc">Move</button>
<button id="p_dec">Back</button>
</body>
</html>

关于javascript - jQuery - mousedown - 一段时间后做事并重复直到 mouseup,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30396846/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com