js事件委托
2015-07-29 22:22
645 查看
js中的事件委托实际上是指利用事件冒泡机制,将子元素的事件加给(委托)父级元素或是更高级的元素来完成。
事件委托的好处主要有:
1、提高性能。提高性能主要反映为:将子元素多个事件处理转换为一个事件处理,使得占用内存减少,同时节约了处理所需时间。
question:利用js使得鼠标指向li的时候,该元素背景变红,移开后回复正常
不使用事件委托:
使用事件委托:
View Code
2、为新添加元素默认绑定事件。
具体在上述示例中新添加一个元素标签,并给其绑定一个事件从而添加一个新的li元素。并分别查看是否使用事件委托的新添加元素的效果。
事件委托的好处主要有:
1、提高性能。提高性能主要反映为:将子元素多个事件处理转换为一个事件处理,使得占用内存减少,同时节约了处理所需时间。
<ul id="items"> <li>a</li> <li>b</li> <li>c</li> </ul>
question:利用js使得鼠标指向li的时候,该元素背景变红,移开后回复正常
不使用事件委托:
window.onload = function(){ var ul = document.getElementById("items"); var lis = ul.getElementsByTagName("li"); for(var i=0; i<lis.length; i++){ lis[i].onmouseover = function(){ this.style.background = "red"; } lis[i].onmouseout = function(){ this.style.background = ""; } } }
使用事件委托:
window.onload = function(){ var ul = document.getElementById("items"); var lis = ul.getElementsByTagName("li"); ul.onmouseover = function(evt){ var evt = evt || window.event; var target = evt.target || evt.srcElement; if (target.nodeName.toLowerCase() == 'li') { target.style.background = "red"; }; } ul.onmouseout = function(evt){ var evt = evt || window.event; var target = evt.target || evt.srcElement; if (target.nodeName.toLowerCase() == 'li') { target.style.background = ""; }; } }
View Code
2、为新添加元素默认绑定事件。
具体在上述示例中新添加一个元素标签,并给其绑定一个事件从而添加一个新的li元素。并分别查看是否使用事件委托的新添加元素的效果。
相关文章推荐
- js事件代理和js知识一些小结1
- JSP----九大内置对象
- js数组操作:
- JS 之 查找数组中重复的元素
- extjs4 tree 节点选中问题
- 利用多叉树实现Ext JS中的无限级树形菜单(一种构建多级有序树形结构JSON的方法
- JSBinding + SharpKit / 实战:转换 Survival Shooter
- ExtJS的面向对象编程(继承、重写)
- JavaScript replaceall 方法
- Jsoup解析HTML获取数据
- js中获取两个日期之间相差的天数
- 用Chrome调试js
- javascript示例
- JSONP请求控制
- JS它DOM
- JS面向对象编程
- JavaScript实现生成验证码
- javascript之修改和删除文档
- JavaScript 注释规范
- javascript实现表单验证