在jQuery中使用event.preventDefault()可以阻止"mousedown"事件触发"click"或"mouseup"事件吗?

19
我对jquery还不熟悉,我想知道在mousedown或mouseup事件中使用events.preventDefault()是否会阻止click或dblclick事件?请给我提供解释或示例。谢谢。

events.preventDefault()只会阻止事件的默认行为。 - Deepu Sasidharan
在阅读了其他Felix的回答之后,我现在认为我理解了你的问题。不过你应该调整标题,因为它是误导性的。 - Felix Kling
谢谢,我得到了我想要的。StackOverFlow太棒了! - Madhu
@Madhu,你能否举个例子说明你是如何得到这个结果的? - Sonu K
@SonuK,评论stackoverflow.com/questions/21900470#comment-33167721让我明白了,在我的情况下,当mousedown时插入了一个新元素,因此目标改变并且随后的click被阻止。我进行了一些设计更改来解决这个问题。 - Madhu
如果您在onmousedown中使用它,则会防止onchange触发。 - John
2个回答

12

mouseupmousedown都不能阻止默认的点击事件。

演示代码

你需要使用 click() 代替。

$('#test').on('click', function(e) {
    e.preventDefault();
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<div onclick="alert('Clicked')" id="test">Click Here</div>

演示代码


2
我知道这一点,但我想知道它是否会防止随后发生的事件? - Madhu
1
不是这样的。e.preventDefault() 只是阻止了元素的默认操作,而不是后续元素或其他事件。 - Felix

3

它不能阻止事件本身,但可以阻止事件触发的动作

举个简单的例子,当您点击超链接时,点击事件的默认操作是将浏览器转到新的URL。但在这种情况下,它不会发生。


谢谢。我以为它会阻止后续事件的发生。它真的能阻止吗? - Madhu
6
不需要。如果您想要阻止后续事件,您需要使用event.stopPropagation()event.stopImmediatePropagation() - Quinn
4
@Quinn 对我来说并不能防止进一步事件的发生。我也不会这样认为,因为传播与此有什么关系呢? - John

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接