我有以下代码,当用户点击上下时返回'haha'。虽然我重新调整了这个次数,但我遇到了麻烦。我第一次点击/向下,'哈哈'只返回一次。我第二次经历这个,它被打印两次。第三次,“哈哈”被打印3次,依此类推。有关为何发生这种情况的任何建议?我只希望每次上/下打印一次“哈哈”。
$(".test").mousedown(function(){
$(".test").mouseup(function(){
console.log('haha');
});
});
答案 0 :(得分:2)
您可以使用one,以便在mouseup之后解除事件处理:
$(".test").mousedown(function(){
$(".test").one('mouseup', function(){
console.log('haha');
});
});
但简单地使用点击似乎更简单:
$(".test").click(function(){ console.log('haha') });
答案 1 :(得分:2)
每次单击鼠标时,都会添加一个新的mouseup事件处理程序。您可能希望将两者分开,或者只使用mouseup处理程序。
答案 2 :(得分:1)
这是因为每次触发mousedown事件时,都会向目标元素添加一个新的mouseup事件。 在发出mouseup事件时立即再次删除mouseup事件,您的问题将得到解决。
答案 3 :(得分:0)
问题是,在您的代码中,每次用户单击时都会添加“mouseup”处理程序。您无需等待mousedown事件即可添加此处理程序;你应该能够从头开始添加它。如果你真的想确保首先触发mousedown,请使用布尔值,如下所示:
var mouseClicked = false;
$(".test").mousedown(function(){
mouseClicked = truel
}).mouseup(function(){
if (mouseClicked ==true){
console.log('haha');
}
});