当我点击时,我会收到一个警告说“向下”但不是“向上”。我读到e.preventDefault()应该解决问题,但事实并非如此。有没有人有任何建议?
$(document).mousedown(function(e){
e.preventDefault();
alert("down");
});
$(document).mouseup(function(e){
alert("up");
});
答案 0 :(得分:4)
问题是mousedown警报已启动并阻止鼠标被触发。如果您只使用鼠标它可以正常工作,或者如果您使用除警报窗口以外的任何其他方法,此方法将起作用。
$(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,则会看到两个事件都按预期触发。
$(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");
});
});