jQuery 事件委托
2017-08-15 17:57
281 查看
概念:
什么是事件委托:通俗的讲,事件就是onclick,onmouseover,onmouseout,等就是事件,委托呢,就是让别人来做,这个事件本来是加在某些元素上的,然而你却加到别人身上来做,完成这个事件。
举个列子:有三个同事预计会在周一收到快递。为签收快递,有两种办法:一是三个人在公司门口等快递;二是委托给前台MM代为签收。现实当中,我们大都采用委托的方案(公司也不会容忍那么多员工站在门口就为了等快递)。前台MM收到快递后,她会判断收件人是谁,然后按照收件人的要求签收,甚至代为付款。这种方案还有一个优势,那就是即使公司里来了新员工(不管多少),前台MM也会在收到寄给新员工的快递后核实并代为签收。
原理:
利用冒泡的原理,把事件加到父级上,触发执行效果。
作用:
1.性能要好
2.针对新创建的元素,直接可以拥有事件
使用情景:
1.为DOM中的很多元素绑定相同事件;
2.为DOM中尚不存在的元素绑定事件;
html:
Js:
什么是事件委托:通俗的讲,事件就是onclick,onmouseover,onmouseout,等就是事件,委托呢,就是让别人来做,这个事件本来是加在某些元素上的,然而你却加到别人身上来做,完成这个事件。
举个列子:有三个同事预计会在周一收到快递。为签收快递,有两种办法:一是三个人在公司门口等快递;二是委托给前台MM代为签收。现实当中,我们大都采用委托的方案(公司也不会容忍那么多员工站在门口就为了等快递)。前台MM收到快递后,她会判断收件人是谁,然后按照收件人的要求签收,甚至代为付款。这种方案还有一个优势,那就是即使公司里来了新员工(不管多少),前台MM也会在收到寄给新员工的快递后核实并代为签收。
原理:
利用冒泡的原理,把事件加到父级上,触发执行效果。
作用:
1.性能要好
2.针对新创建的元素,直接可以拥有事件
使用情景:
1.为DOM中的很多元素绑定相同事件;
2.为DOM中尚不存在的元素绑定事件;
html:
<ul id="wrap"> <li>item1</li> <li>item2</li> <li>item3</li> <li>item4</li> <li>item5</li> </ul>
Js:
$(function(){ // 普通事件 $('li').click(function(){ $(this).css('background', '#D4DFE6'); }); // 动态添加DOM节点 $('#addBtn').click(function(){ $('#wrap').append( $('<li>item'+ ($('li').length + 1) +'</li>') ); }); /** * 事件委托 */ // jQuery 1.9已废弃 /*$('li').live('click', function(){ $(this).css('background', '#D4DFE6'); });*/ // jQuery的delegate写法 $('#wrap').delegate('li', 'click', function(ev){ // this 指向委托的对象 li $(this).css('background', '#D4DFE6'); // 找到父级 ul#wrap $(ev.delegateTarget).css('border', '2px solid #f00'); }); // jQuery的on的写法 $('#wrap').on('click', 'li', function(ev) { // this 指向委托的对象 li $(this).css('background', '#D4DFE6'); // 找到父级 ul#wrap $(ev.delegateTarget).css('border', '2px solid #f00'); }) // js原生写法 var _wrap = document.getElementById('wrap'); _wrap.addEventListener('click', function(ev){ var ev = ev || event; if( ev.target.nodeName == 'LI' ) { ev.target.style.background = '#8EC0E4'; console.log( ev.target.innerHTML ); } // 找到父级 ul#wrap this.style.border = '2px solid #f00'; }); });
相关文章推荐
- jQuery事件绑定和委托实例
- jQuery的事件委托实例分析
- 事件冒泡机制与委托机制,jQuery动态绑定
- jQuery代码优化:事件委托篇
- jQuery 事件委托
- 4000 jQuery事件绑定与事件委托
- JavaScript之事件委托(附原生js和jQuery代码)
- jquery事件委托的回调函数中调用全局变量的简单方法
- jquery事件委托的回调函数中调用全局变量的简单方法
- jquery关于事件冒泡和事件委托的技巧及阻止与允许事件冒泡的三种实现方法
- jquery 事件委托绑定click的使用方法
- Ajax动态拼接HTML,JS失效的解决——Jquery的事件委托
- 【jQuery源码】事件委托
- jquery事件委托的原理和用途
- JS与Jquery的事件委托
- jQuery代码优化:事件委托篇
- jquery 中的事件委托
- jQuery的事件绑定与事件委托
- javascript事件委托和jQuery事件绑定on、off 和one
- jquery事件委托的回调函数中调用全局变量的简单方法