javascript自定义事件绑定委托,如jQuery.on()

时间:2018-02-07 16:12:12

标签: javascript jquery

我正在尝试使用jQuery.on("click", ".target", handler)方法模仿addEventListener()。我对Stackoverflow的研究结果如下:Native addEventListener with selector like .on() in jQuery

所以,在某人将我的问题标记为DUPLICATE之前,请仔细阅读我的要求和演示

这是我的Plunker演示https://plnkr.co/edit/so8Sur?p=preview(我在测试时运行chrome)。以下是对它的解释:

  • 紫色方框是“jQuery方式”正在运行,因为我的期望应该显示消息弹出窗口,无论我点击.target方框还是小时候.target-child
  • 但是对于我自定义事件绑定的绿色框,使用自定义函数customOn(selector, type, filter, handler),它只会在单击.target框时显示弹出窗口,但是当我点击时它不会显示弹出窗口.target-child

所以,我的问题是,我想知道jQuery使用什么样的魔法来点击我演示的.target-child时触发事件,而实际的选择器过滤器是.target。每当需要处理委托事件时,jQuery是否会遍历DOM树以检查任何选择器匹配?如果是的话,我觉得它需要足够的计算资源(也许是RAM),是吗?我希望有更有效的方式,而不是像那样进行遍历。

任何回答和评论都将受到高度赞赏。提前谢谢。

1 个答案:

答案 0 :(得分:-3)

Jquery使用css选择器作为爬行系统。 因此,如果您点击某些内容,它将会“抓取”#34;父母,直到它与目标匹配(或不匹配)。