Javascript技术中最热门的技术之一应该是事件委托。使用事件委托技术可以避免向特定节点添加事件侦听器。相反,事件侦听器添加到它们的父元素,事件侦听器将泡沫从元素的事件分析,并找到事件的子元素的基本概念很简单,但还是有很多人不理解事件委托的原则。在这里,我将解释事件的代表作品,并提供一些基本的事件委托纯Javascript的例子。

假设我们有一个UL元素,它有几个子元素:
复制代码代码如下所示:

项目1
项目2
项目3
项目4
项目5
项目6



我们还认为,当每个子元素被点击时,会有一个不同的事件,你可以添加一个事件监听器每个锂元素,但有时这些李元素可以被删除,可能会有额外的监控,他们添加或删除事件将是一场噩梦,特别是当你听的代码另一个应用程序的地方。但是如果你把听众对他们的父母吗你怎么知道子元素被点击

简单:当事件的元素冒泡到父UL元素时,您可以检查事件对象的目标属性,捕获真正的引用节点元素。单击。下面是一个非常简单的Javascript代码,演示事件委托的过程:
复制代码代码如下所示:

查找父元素,添加侦听器…
document.getelementbyid(父列表)AddEventListener(单击。
是 / / e.target点击元!
如果单击元素
如果(e.target e.target.nodename = = Li){
找到目标,id的输出!
console.log(列表项目
}
});


第一步是添加一个事件监听器的父元素。当一个事件触发一个监听器,它检查事件的来源和排除非李子元素的事件。如果是锂元素,我们会发现目标!如果它不是一个事件将被忽略。这是一个很简单的例子,UL和李是标准的Paterson搭配。让我们来测试一些比赛的大元素。假设我们有一个有很多子元素的父元素div,但我们关注的是一个标签在它的类的CSS类:
复制代码代码如下所示:

获取父div元素,添加侦听器…
document.getelementbyid(mydiv )AddEventListener(单击。
是 / / e.target点击元
如果(e.target e.target.nodename = =一){
获取CSS类名
无功课= e.target.classname.split();
搜索/匹配!
如果(类){
对于每个CSS类,元素…
对于(var x = 0;x<classes.length;x++){
如果它有CSS类/我们想要…
如果(类{X} = = A){
!
console.log(锚元素点击!;

做某事/现在/现在。在这里...

}
}
}

}
});

上面的例子不仅比较标签的名称,但也比较CSS类名称。这是一个有点复杂,但是很有代表性。例如,如果有一个标签,标签的跨度,跨度将成为一个目标元素。在这个时候,我们需要跟踪DOM树结构来找出是否有一个a.classa元。

因为大多数程序员将使用jQuery和其他工具库来处理DOM元素和事件。我建议大家都使用事件委托方法,因为工具库提供高级委托方法和元素识别方法。

我希望这篇文章将帮助您理解Javascript事件委托背后的原则,我希望您也能感受到事件委托的强大作用。