2

jQuery 如何知道任何 DOM 事件何时发生?

$('body').on('click', function(e) {
    alert('working');
});

document.body.onclick; // null

我太依赖这个库了。有人能告诉我它是如何知道身体被点击的吗?

4

2 回答 2

3

jQuery(感谢上帝)不使用onclickDOM 元素的属性或属性,而是使用addEventlistenerIE-attachEvent

于 2013-01-29T02:08:51.250 回答
3

.onjQuery.event.add行(如果您查看第 2688 行的 jQuery 源代码)。

这尝试使用事件类型的缓存版本,但如果没有,最终归结为调用特定于浏览器的函数来附加事件(在第 2767 行左右)。

if ( elem.addEventListener ) {
    elem.addEventListener( type, eventHandle, false );
} else if ( elem.attachEvent ) {
    elem.attachEvent( "on" + type, eventHandle );
}

对于这两种情况,它似乎都没有回退,因此on*永远不会写入属性。因此,elem.onclick如果您使用,将为空jQuery.on

供参考:http ://code.jquery.com/jquery.js

于 2013-01-29T02:11:20.797 回答