单击超链接时阻止触发父容器单击事件

时间:2010-01-04 01:28:06

标签: javascript javascript-events

在我的网页上,我有一个文件列表。

每个文件都在它自己的容器div中(div class =“file”)。容器内部是文件和描述的链接。

我想允许用户点击容器上的任意位置来下载文件。我通过向容器添加click事件并检索子链接的href来完成此操作。

当文件在新窗口中打开时,如果用户实际点击了该链接,该文件将打开两次。

因此,我需要在单击超链接时阻止触发父容器单击事件。这样做的最佳方法是将超链接功能添加到超链接to0并设置event.stopPropagation吗?据推测,这会阻止事件冒泡到集装箱。

由于 本

3 个答案:

答案 0 :(得分:18)

在Microsoft模型中,您必须将事件的cancelBubble属性设置为true。

window.event.cancelBubble = true;

在W3C模型中,您必须调用事件的stopPropagation()方法。

event.stopPropagation();

如果你没有使用框架,这是一个跨浏览器的解决方案:

function doSomething(e) {
    if (!e) e = window.event;
    e.cancelBubble = true;
    if (e.stopPropagation) e.stopPropagation();
}

答案 1 :(得分:11)

是的,请使用stopPropagation。请参阅:Prevent execution of parent event handler

答案 2 :(得分:3)

感谢您的帮助。

我使用的是jQuery,但了解非框架解决方案很好。

为链接添加了以下内容:

$(".flink").click(function(e) {
    e.stopPropagation();
});