Javascript高级事件冒泡

时间:2012-10-16 14:20:19

标签: javascript events

我的大部分工作都是jQuery,但我正在恢复“旧学校”js,因为它是一个即将到来的项目(要求 - 没有公文或其他图书馆 - 我无法控制,不要说“使用jQuery“)。我的范围纯粹是最新的浏览器,包括iOS safari,不需要向后兼容。我正在看事件处理程序 - 我有一个想法可能很疯狂,但我找不到任何相关的东西 - 可能是因为它很疯狂。

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

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

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

2 个答案:

答案 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)

  

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

没有。浏览器没有提供这样做的方法。