- 核心是 matchSelector 方法,可以借用了 jQuery.fn.is 方法;
- 选择器匹配了多个元素时,事件触发顺序应该从底向上;
- 绑定多个监听函数时并多时匹配到多个元素时,依次发生顺序要正确;
- 匹配目标应该包含 event.target,不包含委托的顶层元素;
- 反注册时,清理代理函数;
JSON.stringify(delegateMap, function(k, v) {
return typeof v === 'function' ? 'fn' : v
}, ' ')
// =>
{
"1": {
"click .a": [],
"click span": [
"fn"
],
"click section": [
"fn"
]
}
}