原生js事件批量绑定-事件委托
来源:互联网 发布:bilibili直播mac 编辑:程序博客网 时间:2024/05/18 15:23
我们常常会遇到一个需求,就是给表格里面的每个特定的td绑定一个事件.
遇到这种需求,很多人基本都会想到如下代码:
var td = document.getElementsByTagName("td"); for( let i =0; i<td.length; i++){ td[i].onclick = function(){ //事件处理 } }
以上代码的确可以正常执行,但是当该类td很多是,效率会很低,占用的内存也会很大。
而比较好的方法是用事件委托的机制,事件委托主要是依靠一下两个特性。
1.浏览器事件的冒泡机制
浏览器的事件发生有一般有三个阶段(IE浏览器事件没有捕获阶段)。
事件捕获 ->事件目标 ->事件冒泡,事件冒泡会将事件从事件目标节点处一级一级向父节点传播,直到document对象。换句话说,我们可以在父节点处理子节点的事件。2.事件对象的 event.target指向事件目标,即是事件发生的的具体节点
下面是事件委托的方法
这里假设只有一个table,且将事件的处理绑定到table中,当然也可以绑定在body或者td的父元素或其他祖先元素里。
var table = document.getElementsByTagName("table")[0]; if(window.attachEvent){ table.attachEvent("onclick",function(event){ //event.target即是点击处的元素。 if(event.target.nodeName !== "TD"){//这里通过元素名称过滤,也可以通过其他方法过滤。 return; } //事件处理逻辑 }); } else{ table.addEventListener("click",function(event){ if(event.target.nodeName !== "TD"){//这里通过元素名称过滤,也可以通过其他方法过滤。 return; } //事件处理逻辑 }); }
以上事件过滤是因为事件委托时,table下所有的元素都会触发事件,而我们需要处理的只是固定td而已。所以对与其他元素的事件,我们不用处理。
阅读全文
0 0
- 原生js事件批量绑定-事件委托
- js原生事件委托
- js批量绑定事件
- js事件绑定、事件监听、事件委托
- 原生JS的事件绑定
- 原生JS的事件绑定
- 对于原生js中的事件委托解析
- JS 中的事件绑定、事件监听与事件委托
- JS 事件绑定、事件监听、事件委托详细介绍
- JS 中的事件绑定、事件监听、事件委托是什么?
- JS 中的事件绑定、事件监听、事件委托
- 原生js绑定和解除事件
- 原生js事件的绑定和解除
- js事件委托的方式绑定
- 原生js事件绑定和事件移除
- js给每个li绑定不同事件(事件委托技术)
- js中事件绑定3种方法以及事件委托
- JS事件机制:事件绑定、事件监听、事件委托(事件代理)
- 1325:字符串找规律
- 二叉树中找一条和最大的路径
- 记忆化搜索理解
- metric deep learning loss
- Logistic回归:成本函数
- 原生js事件批量绑定-事件委托
- c++ a-b大数减小数问题
- 移除所有docker images
- 输入两个ip区间段,判断是否有交集【2018华为软件岗位笔试题目】
- C#命名空间 using的用法
- List、Map、Tree报空指针java.lang.NullPointerException异常的解决方案
- Project Euler 31-35题
- 变量,环境变量,PATH变量
- java中怎么统计一个字符串中每个字符的出现次数