e.stopPropogation() 等效于点击事件的捕获阶段



我正在寻找一种方法来阻止单击事件在单击父元素时继续沿着 DOM 向下移动到嵌套的子元素(捕获阶段)。

这将是e.stopPropogation()函数的反面,以防止点击事件冒泡。

有原生的JS函数吗?

编辑 03/10链接到示例

编辑 03/11函数调用中的拼写错误 - 它是stopPropagation(),而不是stopPropogation()。感谢@JackPattishall的发现。

是的,有本机JS函数用于在捕获阶段捕获事件。

在所有浏览器中,除 IE<9 外,事件处理有两个阶段。

事件首先下降 - 这称为捕获,然后冒泡。此行为在 W3C 规范中是标准化的。

所有事件处理方法都忽略捕获阶段。将 addEventListener 与最后一个参数 true 一起使用只是在捕获时捕获事件的方法。

elem.addEventListener( type, handler, phase )

相位 = 真 处理程序在捕获阶段设置。相位 = 假 处理程序设置在冒泡阶段。

为了更好地了解事件捕获和冒泡,您可以点击此链接

okey, 你和做的一件事就是在 Dom 的顶部使用 stopPropogation()。

例如,您有一个表(#table1)和元素(tr,td)。所以,如果我这样做:

table1.addEventListener("click",function(event){
  event.stopPropagation();
  console.log(this);
},true);
tableElem[2].addEventListener("click",function(event){
  console.log(this);
});
tableElem[2].addEventListener("click",function(event){
  console.log("hii");
});

该事件将在顶部被拦截并停止传播。stopPropogation() 停止传播,无论在哪个步骤事件被拦截。

最新更新