数码资讯
javascript的事件代理和委托实例分析
在Javascript中,你经常需要听列表中的李的一些例子。假设我们有一个列表如下: 复制代码代码如下所示: 第一条 2 Item3 第四 如果我们想实现以下功能:当鼠标点击一个李时,警报输出的内容,我们通常写这个: 当列表中的项目都比较小,onclick事件直接添加到每一个李 当清单项目较多,每个
选购提示
关注价格、性能、续航、售后和真实使用场景,理性比较后再下单。
在Javascript中,你经常需要听列表中的李的一些例子。假设我们有一个列表如下:
复制代码代码如下所示:
第一条
2
Item3
第四
如果我们想实现以下功能:当鼠标点击一个李时,警报输出的内容,我们通常写这个:
当列表中的项目都比较小,onclick事件直接添加到每一个李
当清单项目较多,每个列表项调用onload
第一种方法简单而直接,但它没有考虑HTML和Javascript之间的分离,也不推荐使用。第二种方法的代码如下所示:
复制代码代码如下所示:
窗口。指针函数(){
无功ulnode = document.getelementbyid(一览表);
无功linodes = ulnode。子| | ulnode.children;
对于(var i = 0;i < linodes.length;i++){
我linodes { }。addEventListener(听到咔哒声,功能(e){
警报(e.target .innerHTML);
},假);
}
}
由此可以看出,如果连续删除或添加李,函数()也必须不断地改变操作,从而容易出错。因此,建议使用事件代理。在使用事件代理之前,让我们首先了解事件阶段。
事件阶段:
当一个事件被触发时,他不仅是一次对其起源引发的,但通过三个不同的阶段。简而言之:事件从文档的根节点到目标对象开始(捕获阶段),然后触发对目标(目标阶段),然后返回到根节点(泡沫阶段)的文档,如图所示(图片来自W3C)。
事件捕获阶段(捕获阶段)
在活动的第一阶段是捕获阶段。事件从文档流的根节点的DOM树结构的事件目标节点的开始。每个层面的DOM节点传递的方式,和捕获事件引发的对每个节点到目标节点的到达到达的时间,捕获阶段的主要任务是恢复的传播路径,这是追溯到文danggen节点的路径在冒泡阶段。
复制代码代码如下所示:
element.removeeventlistener(ltevent名称>,);
我们监测的节点通过使用该功能,你可以添加一个监视回调函数设置了真实的事件捕获阶段。在实际应用中,我们不使用许多用例捕获阶段的监测,但是我们可以防止类似的点击事件触发一个特定的元素,通过捕获捕获阶段的事件。
复制代码代码如下所示:
VaR形式= document.queryseletor(‘形');
form.addeventlistener(听到咔哒声,功能(e){
e.stoppropagation();
},真的);
如果您对这个用法不太了解,最好在气泡阶段设置false或未定义值来监视事件。
目标相位(目标相位)
当事件到达目标节点时,事件进入目标阶段。事件在目标节点上触发,然后反向回流以了解最外层的文档节点。
多层嵌套节点,鼠标指针通常是位于该元件的最内层。假设你设置一个点击监控功能在一个DIV元素,而P元素内的元素的用户点击,然后P元素是本次事件冒泡允许目标元素。我们监视点击事件这个div或更高级别的元素,并触发回调函数的时间传播过程。
冒泡相(气泡相)
当一个事件触发在一个目标事件上时,它不会终止在这个元素上,它会向上或向下冒泡DOM树,直到它到达最外层的根节点,也就是说,相同的事件将在目标节点的父节点,父节点的父节点上触发…直到最最外面的节点。
大多数事件都是冒泡的,但不是全部。具体可见:规范
可以想象,事件代理可以用来监视每一个代码,代码如下所示:
复制代码代码如下所示:
窗口。指针函数(){
无功ulnode = document.getelementbyid(一览表);
UlNode.addEventListener(听到咔哒声,功能(e){
如果(e.targete。目标。它们。toUpperCase)=(礼)确定李* / / * {目标事件
警报(e.target .innerHTML);
}
},假);
};
以上是本文的全部内容,希望能够熟悉Javascript事件的委托和代理可以帮助。
请花些时间与朋友分享这篇文章,或者留下评论,我们要感谢你的支持!
复制代码代码如下所示:
第一条
2
Item3
第四
如果我们想实现以下功能:当鼠标点击一个李时,警报输出的内容,我们通常写这个:
当列表中的项目都比较小,onclick事件直接添加到每一个李
当清单项目较多,每个列表项调用onload
第一种方法简单而直接,但它没有考虑HTML和Javascript之间的分离,也不推荐使用。第二种方法的代码如下所示:
复制代码代码如下所示:
窗口。指针函数(){
无功ulnode = document.getelementbyid(一览表);
无功linodes = ulnode。子| | ulnode.children;
对于(var i = 0;i < linodes.length;i++){
我linodes { }。addEventListener(听到咔哒声,功能(e){
警报(e.target .innerHTML);
},假);
}
}
由此可以看出,如果连续删除或添加李,函数()也必须不断地改变操作,从而容易出错。因此,建议使用事件代理。在使用事件代理之前,让我们首先了解事件阶段。
事件阶段:
当一个事件被触发时,他不仅是一次对其起源引发的,但通过三个不同的阶段。简而言之:事件从文档的根节点到目标对象开始(捕获阶段),然后触发对目标(目标阶段),然后返回到根节点(泡沫阶段)的文档,如图所示(图片来自W3C)。
事件捕获阶段(捕获阶段)
在活动的第一阶段是捕获阶段。事件从文档流的根节点的DOM树结构的事件目标节点的开始。每个层面的DOM节点传递的方式,和捕获事件引发的对每个节点到目标节点的到达到达的时间,捕获阶段的主要任务是恢复的传播路径,这是追溯到文danggen节点的路径在冒泡阶段。
复制代码代码如下所示:
element.removeeventlistener(ltevent名称>,);
我们监测的节点通过使用该功能,你可以添加一个监视回调函数设置了真实的事件捕获阶段。在实际应用中,我们不使用许多用例捕获阶段的监测,但是我们可以防止类似的点击事件触发一个特定的元素,通过捕获捕获阶段的事件。
复制代码代码如下所示:
VaR形式= document.queryseletor(‘形');
form.addeventlistener(听到咔哒声,功能(e){
e.stoppropagation();
},真的);
如果您对这个用法不太了解,最好在气泡阶段设置false或未定义值来监视事件。
目标相位(目标相位)
当事件到达目标节点时,事件进入目标阶段。事件在目标节点上触发,然后反向回流以了解最外层的文档节点。
多层嵌套节点,鼠标指针通常是位于该元件的最内层。假设你设置一个点击监控功能在一个DIV元素,而P元素内的元素的用户点击,然后P元素是本次事件冒泡允许目标元素。我们监视点击事件这个div或更高级别的元素,并触发回调函数的时间传播过程。
冒泡相(气泡相)
当一个事件触发在一个目标事件上时,它不会终止在这个元素上,它会向上或向下冒泡DOM树,直到它到达最外层的根节点,也就是说,相同的事件将在目标节点的父节点,父节点的父节点上触发…直到最最外面的节点。
大多数事件都是冒泡的,但不是全部。具体可见:规范
可以想象,事件代理可以用来监视每一个代码,代码如下所示:
复制代码代码如下所示:
窗口。指针函数(){
无功ulnode = document.getelementbyid(一览表);
UlNode.addEventListener(听到咔哒声,功能(e){
如果(e.targete。目标。它们。toUpperCase)=(礼)确定李* / / * {目标事件
警报(e.target .innerHTML);
}
},假);
};
以上是本文的全部内容,希望能够熟悉Javascript事件的委托和代理可以帮助。
请花些时间与朋友分享这篇文章,或者留下评论,我们要感谢你的支持!
声明:本文内容用于数码产品信息整理与选购参考,具体价格、库存、售后政策以官方渠道和电商页面实时信息为准。