【发布时间】:2013-06-09 05:37:41
【问题描述】:
我在这里回答了一个问题,我偶然发现了一个奇怪的行为。 Check this demo
效果很好。我正在添加事件处理程序,当我单击我拥有的图像时
alert(2) 不触发链接处理程序alert(1)。奇怪的是,如果我删除
preventDefault, alert(1) 仍然没有触发,但它遵循链接。
为什么 stopPropagation 会阻止处理程序冒泡事件,但它需要 preventDefault 才能不跟随链接?
这纯粹是出于教育原因。我只是想了解发生了什么。
//编辑请在回答之前查看演示。我在两个不同的元素上有处理程序。 尽管 stopPropagation 阻止父元素的处理程序触发,但它不会阻止它跟随链接。但是不停止传播,防止事件冒泡吗?它不会使父元素的事件无效吗?
//为什么处理程序alert(1)的事件无效但链接的following没有?
【问题讨论】:
-
不,我读过这篇文章。我实际上将它粘贴在我正在谈论的答案上。请看演示。
-
我认为这个问题很好地回答了你的问题。
preventDefault和stopPropagation做不同的事情。preventDefault停止 浏览器的 操作,stopPropegation阻止事件传播。 -
是的,我同意,但是,您说“stopPropegation 阻止事件传播”,那么为什么它会到达链接标签并跟随链接?
-
嗯,不是吗?如果您click the image(左上角很小且破损。您只会看到
2而不是1。 -
我没这么说。我知道我的例子做了什么,这就是它困扰我的原因。当它没有警告(1)时,为什么它会跟随链接?它可以正常使用警报,但不能使用以下链接
标签: javascript jquery event-handling