在jQuery中mousedown后鼠标没有触发

时间:2014-03-25 19:04:30

标签: javascript jquery

当我点击时,我会收到一个警告说“向下”但不是“向上”。我读到e.preventDefault()应该解决问题,但事实并非如此。有没有人有任何建议?

   $(document).mousedown(function(e){
        e.preventDefault();
        alert("down");
   });
   $(document).mouseup(function(e){
        alert("up");
    });

5 个答案:

答案 0 :(得分:4)

问题是mousedown警报已启动并阻止鼠标被触发。如果您只使用鼠标它可以正常工作,或者如果您使用除警报窗口以外的任何其他方法,此方法将起作用。

JSFiddle for the mouseup only

$(document).mouseup(function(e){
    alert("up");
});

带输入框的第二个示例:http://jsfiddle.net/YRqe8/2/

$(document).mousedown(function(e){
    $("#text").val("mousedown");
});   
$(document).mouseup(function(e){
    $("#text").val("mouseup");
});

答案 1 :(得分:0)

这是因为mousedown事件中显示的警报阻止了mouseup事件被触发。

如果您使用console.log,则会看到两个事件都按预期触发。

http://jsfiddle.net/Ca9q3/

$(document).mousedown(function(){
    console.log('test');
});
$(document).mouseup(function(){
    console.log('test2');
});

答案 2 :(得分:0)

问题是,当发生向下警告时,文档失去焦点,警报框会获得焦点。因此,当您松开按钮时,文档不会捕获该按钮,因为它发生在警报框中。

我想你会发现,如果你将alert()切换到console.log(),它就会有效。

答案 3 :(得分:0)

它不会阻止mouseup被解雇。它实际上可以像您期望的那样,在您的示例中使用alert投入混合的小警告。

警告对话框超出了窗口的范围,当您在对话框处于活动状态时将鼠标向上移动,事件将转到警报。如果单击并按住鼠标按钮并使用回车键关闭警报,则会发现释放按钮时mouseup事件将会触发。

答案 4 :(得分:-1)

尝试将代码放入就绪函数中,如下所示:

$(document).ready(function(){
  $(document).mousedown(function(e){
    e.preventDefault();
    alert("down");
  });
});