-1

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

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

                  });
                });
4

4 回答 4

2

您可以使用one,以便在 mouseup 之后事件处理不受约束:

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

              });
            });

但简单地使用 click 似乎更简单:

$(".test").click(function(){ console.log('haha') });
于 2013-05-15T14:42:14.057 回答
2

每次单击鼠标时,您都会添加一个新的 mouseup 事件处理程序。您可能想将两者分开,或者只使用 mouseup 处理程序。

于 2013-05-15T14:44:16.763 回答
1

这是因为每次触发 mousedown 事件时,都会向目标元素添加一个新的 mouseup 事件。在触发 mouseup 事件时立即再次删除 mouseup 事件,您的问题将得到解决。

于 2013-05-15T15:02:09.223 回答
0

问题是,在您的代码中,您每次用户点击时都会添加“mouseup”处理程序。您无需等待 mousedown 事件即可添加此处理程序;您应该可以从头开始添加它。如果您真的想确保首先触发 mousedown,请使用布尔值,如下所示:

var mouseClicked = false;

$(".test").mousedown(function(){
    mouseClicked = truel
}).mouseup(function(){
    if (mouseClicked ==true){
        console.log('haha');
    }
});
于 2013-05-15T14:46:46.373 回答