3

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

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

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

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

4

2 回答 2

4

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

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

更多关于捕捉的信息,可以在 quirksmode 上找到

于 2012-10-16T14:29:05.237 回答
1

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

不,浏览器不提供这样做的方法。

于 2012-10-16T14:21:28.820 回答