如何修复mouseup和mousedown的问题?

时间:2013-05-15 14:41:31

标签: javascript

我有以下代码,当用户点击上下时返回'haha'。虽然我重新调整了这个次数,但我遇到了麻烦。我第一次点击/向下,'哈哈'只返回一次。我第二次经历这个,它被打印两次。第三次,“哈哈”被打印3次,依此类推。有关为何发生这种情况的任何建议?我只希望每次上/下打印一次“哈哈”。

                $(".test").mousedown(function(){
                 $(".test").mouseup(function(){
                  console.log('haha');

                  });
                });

4 个答案:

答案 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');
    }
});