Javascript高级事件冒泡



我的大部分工作都是jQuery,但我正在为即将到来的项目恢复"老派"js(REQUEMENT-没有jQuery或其他库-超出我的控制范围,不要说"使用jQuery")。我的范围纯粹是最新的浏览器,包括iOS safari,不需要向后兼容性。我正在研究事件处理程序——我有一个想法可能很疯狂,但我找不到任何相关的东西——可能是因为它很疯狂。

  1. 我试图避免将事件直接绑定到元素,因为我将经常用AJAX调用来替换内容。

  2. 我目前的思路是将听众绑定到文档。看起来很标准的做法。

但是,我可以跳过所有冒泡事件吗?我能告诉浏览器忘记它对事件冒泡的了解,直接跳到文档吗?我意识到,如果我这样做,我将无法处理分配给父元素的事件,但考虑到项目范围,我可以接受这一点,尤其是如果它可以提高浏览器的熟练度。

跳过冒泡阶段实际上不是一个选项。但是,由于您只希望支持现代浏览器,您可以简单地捕获顶级(document)级别的事件,并调用stopPropagation方法
这样,事件就永远不会到达目标/srcElement,也永远不会到达冒泡阶段:

document.body.addEventListener('click',function(e)
{
e.stopPropagation();
//handle event
},true);//<-- true for capturing

更多关于捕捉的信息,一如既往,可以在怪癖模式上找到

我可以跳过所有冒泡事件吗?

否。浏览器无法提供这样的方法。

最新更新