为什么jQuery事件模型不支持事件捕获,只支持事件冒泡?

20

为什么jQuery事件模型不支持事件捕获,只支持事件冒泡?

2个回答

14
因为并非所有浏览器都支持事件捕获,尤其是 IE。由于 jQuery 应该是跨浏览器兼容的,所以它不能提供事件捕获(虽然可能可以模拟事件捕获,但如果很容易实现,我相信他们一定已经这样做了)。

7
在我看来,jQuery 2.x 应该支持它。 - A. Wolff
2
那是一个非常糟糕的不支持某事的理由。至少给用户选择的权力。我认为使用jQuery的事件命名空间功能非常方便,而原生JS则不是这样。 - vsync
很多东西在IE中不起作用,但是有很多有用的库已经被创建了。遗憾。 - Bernardo Dal Corno

7

在jQuery 2中,这实际上是一个理想的特性,但核心团队非常确信允许事件捕获在整个jQuery事件系统中具有平等地位将会引起很多问题。原始票证可以在这里找到[1]。他们甚至在一些讨论之后关闭了这张票。

此外,早于IE8和Opera 7.0版本的浏览器不支持事件捕获。由于jQuery的主要目标是提供跨浏览器支持,因此它不支持事件捕获。

轻松愉快地说,jQuery似乎更专注于利用事件委托,该委托基于事件向DOM树上的冒泡。

[1] http://bugs.jquery.com/ticket/14953


1
jQuery 2.0 的整个目的是放弃对旧版浏览器的支持,因此不支持事件捕获的旧版浏览器至少不应该成为 jQuery 2 的阻碍。 - Jens

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接