我的大部分工作都是jQuery,但我正在为即将到来的项目恢复"老派"js(REQUEMENT-没有jQuery或其他库-超出我的控制范围,不要说"使用jQuery")。我的范围纯粹是最新的浏览器,包括iOS safari,不需要向后兼容性。我正在研究事件处理程序——我有一个想法可能很疯狂,但我找不到任何相关的东西——可能是因为它很疯狂。
-
我试图避免将事件直接绑定到元素,因为我将经常用AJAX调用来替换内容。
-
我目前的思路是将听众绑定到文档。看起来很标准的做法。
但是,我可以跳过所有冒泡事件吗?我能告诉浏览器忘记它对事件冒泡的了解,直接跳到文档吗?我意识到,如果我这样做,我将无法处理分配给父元素的事件,但考虑到项目范围,我可以接受这一点,尤其是如果它可以提高浏览器的熟练度。
跳过冒泡阶段实际上不是一个选项。但是,由于您只希望支持现代浏览器,您可以简单地捕获顶级(document
)级别的事件,并调用stopPropagation
方法
这样,事件就永远不会到达目标/srcElement,也永远不会到达冒泡阶段:
document.body.addEventListener('click',function(e)
{
e.stopPropagation();
//handle event
},true);//<-- true for capturing
更多关于捕捉的信息,一如既往,可以在怪癖模式上找到
我可以跳过所有冒泡事件吗?
否。浏览器无法提供这样的方法。