我的大部分工作都是jQuery,但我正在恢复“旧学校”js,因为它是一个即将到来的项目(要求 - 没有公文或其他图书馆 - 我无法控制,不要说“使用jQuery“)。我的范围纯粹是最新的浏览器,包括iOS safari,不需要向后兼容。我正在看事件处理程序 - 我有一个想法可能很疯狂,但我找不到任何相关的东西 - 可能是因为它很疯狂。
我正在尝试避免将事件直接绑定到元素,因为我将经常使用AJAX调用替换内容。
我目前的思路是将听众绑定到文档。似乎很标准的做法。
但是,我可以跳过所有事件冒泡吗?我可以以某种方式告诉浏览器忘记它对事件冒泡的了解,并直接跳到文档吗?我意识到,如果我这样做,我将无法处理分配给父元素的事件,但考虑到项目范围,我可以忍受,特别是如果它可以提高浏览器的熟练程度。
答案 0 :(得分:4)
实际上,跳过冒泡阶段不是一种选择。但是,由于您只是想支持现代浏览器,您可以简单地捕获顶部(document
)级别的事件,并调用stopPropagation
方法。
这样,事件永远不会得到目标/ srcElement,永远不会到达冒泡阶段:
document.body.addEventListener('click',function(e)
{
e.stopPropagation();
//handle event
},true);//<-- true for capturing
更多关于捕捉,is to be found on quirksmode
答案 1 :(得分:1)
我可以跳过所有事件冒泡吗?
没有。浏览器没有提供这样做的方法。