我想在按住鼠标的同时连续做一些事情,并在它被释放后停止它。所以我有以下代码:
var timeout;
var y;
$(document).mousemove(function(event){
y = event.pageY;
$(document).mousedown(function(){
timeout = setInterval(function(event){
// Do something with y
}, 100);
});
$(document).mouseup(function(){
clearInterval(timeout);
});
});
但这不起作用!我永远不会停止做某事! //用y继续运行!
我在这里缺少什么?
由于
编辑:moousemove在这里是一个拼写错误,而不是我的代码。我的代码是mousemove。它仍然没有工作/ 编辑:我之所以使用mousemove是因为我想继续阅读pageY。当我尝试在setInterval()中执行此操作时,它不起作用。如果我在mousedown中拥有它,它只会读取一次。这就是为什么我把它放在mousemove()中答案 0 :(得分:3)
您正在对鼠标移动进行事件绑定,这将在document
上创建大量的mousedown和mouseup事件。即使你试图做一个鼠标按下/ mouseup;鼠标移动将被触发,并作为一个链继续。而是将它们移出mousemove处理程序。
var timeout;
var y;
$(document).mousemove(function (event) {
y = event.pageY;
});
$(document).mousedown(function () {
timeout = setInterval(function (event) {
// Do something with y
console.log('mousedown ' + y);
}, 100);
});
$(document).mouseup(function () {
console.log('mouseup');
clearInterval(timeout);
});
<强> Fiddle 强>
您可以通过在原始代码的每个事件的回调入口点放置console.log来验证这一点。您将能够看到每个鼠标移动时mousedown事件的数量都会增加。看看这个小提琴的控制台本身http://jsfiddle.net/eKy2T/