e.stopPropagation()等效于Click事件的捕获阶段?

时间:2015-03-11 04:32:47

标签: javascript jquery

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

这将是阻止点击事件冒泡的e.stopPropogation()函数的反转。

是否有本机JS功能?

编辑03/10 Link to example

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

2 个答案:

答案 0 :(得分:0)

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

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

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

所有事件处理方法都忽略了句法阶段。使用addEventListener和last参数true只是在捕获时捕获事件的方法。

elem.addEventListener(type,handler,phase)

phase = true     处理程序设置在捕获阶段。 phase = false     处理程序设置在冒泡阶段。

为了更好地理解事件捕获和冒泡,您可以按照link

进行操作

答案 1 :(得分:0)

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()停止传播,无论拦截哪个步骤事件。