在我的网页上,我有一个文件列表。
每个文件都在它自己的容器div中(div class =“file”)。容器内部是文件和描述的链接。
我想允许用户点击容器上的任意位置来下载文件。我通过向容器添加click事件并检索子链接的href来完成此操作。
当文件在新窗口中打开时,如果用户实际点击了该链接,该文件将打开两次。
因此,我需要在单击超链接时阻止触发父容器单击事件。这样做的最佳方法是将超链接功能添加到超链接to0并设置event.stopPropagation吗?据推测,这会阻止事件冒泡到集装箱。
由于 本
答案 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();
});