1、引言

现实当中,前台MM收到快递后,她会判断收件人是谁,然后按照收件人的要求签收,甚至代为付款。(公司也不会容忍那么多员工站在门口就为了等快递);

这种事件委托还有个好处,就是即便公司又来很多员工,前台MM照样可以签收新员工的快递,新员工即便刚来但一样拥有拿自己快件的方法;

2、概念

通俗来讲: 事件有:onclick、onmouseover、onmouseout等等;委托呢,就是让别人来做,这件事情本身是加在元素上,然而你却加载别人身上来做,完成事件;

3、原理

利用冒泡原理,将事件加在父级上触发,执行效果;

4、好处

  1. 提高性能;
  2. 新添加元素,可以直接拥有事件;

5、事件源

跟this作用一样(他不用看指向问题,谁操作的就是谁),event对象下的。

6、使用情景

  * 为DOM中的很多元素绑定相同事件;
  * 为DOM中尚不存在的元素绑定事件;

7、举栗子

需要触发每个li来改变他们的背景颜色
```html

  • 111111111
  • 22222222222
  • 33333333
  • 44444444444

js一般写法:

window.onload = function(){

    var oUl = document.getElementById('ul');
var aLi = oUl.getElementsByTagName('li'); for(var i=; i<aLi.length; i++){
aLi[i].onmouseover = function(){
this.style.background = 'red';
}
aLi[i].onmouseout = function(){
this.style.background = ' ';
}
} }

事件委托的js写法:

window.onload = function(){
  var oUl = document.getElementById('ul');
  var aLi = oUl.getElementsByTagName('li');
  /*这里用到事件源:event对象, 事件源,不管在哪个事件中,只要你操作的那个元素就是事件源
  ie: window.event.srcElent
  标准下: event.target
  nodeName: 找到元素的标签名;
  */
  oUl.onmouseover = function(ev) {
  var ev = ev||window.event;
  var target = ev.target || ev.srcElement;
  // console.log(target.innerHTML);
if(target.nodeName.toLowerCase() == "li"){
target.style.background = 'red';
}
}
  oUl.onmouseout = function(ev) {
var ev = ev || window.event;
var target = ev.target|| ev.srcElement; if(target.nodeName.toLowerCase() == 'li'){
target.style.background = ' ';
}
  }
}

事件委托的jq写法

    $(function(){
$("#ul").on('click','li',function(){
if(!$(this).attr('s')){
$(this).css('background','red');
$(this).attr('s',true);
}else{
$(this).css('background','#fff');
$(this).removeAttr('s');
}
})
})

JavaScript, JQuery事件委托的更多相关文章

  1. JavaScript / JQuery事件委托如何实现?

    一:什么是事件委托? 事件委托是利用事件冒泡,只指定一个事件处理程序来管理某一类型的所有事件. 事件委托就是利用事件冒泡原理实现的! 事件冒泡:就是事件从最深节点开始,然后逐步向上传播事件: 例:页面 ...

  2. javascript事件委托和jquery事件委托

    元旦过后,新年第一篇. 初衷:很多的面试都会涉及到事件委托,前前后后也看过好多博文,写的都很不错,写的各有千秋,自己思前想后,为了以后自己的查看,也同时为现在找工作的前端小伙伴提供一个看似更全方位的解 ...

  3. js进阶---12-12、jquery事件委托怎么使用

    js进阶---12-12.jquery事件委托怎么使用 一.总结 一句话总结:通过on方法(事件委托),给要绑定事件的元素的祖先绑定事件,从而达到效果. 1.事件委托是什么? 通过事件冒泡,让子元素绑 ...

  4. jQuery事件委托

    jQuery事件委托 <ul id="ulBox"> <li data-id="1"></li> <li data-i ...

  5. jquery事件委托详解

    jQuery事件委托处理流程 上一章分析jQuery.event.add的时候已经分析了事件绑定,再把绑定的部分源码抽出来 if ( !(eventHandle = elemData.handle) ...

  6. JavaScript之事件委托(附原生js和jQuery代码)

    事件委托的原理依赖于事件冒泡,可以通过给父元素的事件委托来确定是哪个子元素触发了事件从而做一系列操作. 使用事件委托的优点 1.操作子元素时不用一一遍历,可以根据事件触发的对象而进行相应操作 dom结 ...

  7. Jquery事件委托之Safari

    什么是事件委托 事件委托是Jquery中一种事件绑定的方式,不同于常见的事件绑定方式将事件绑定在目标元素上,而是将事件绑定在父级元素上通过事件冒泡来执行绑定函数. //常见的事件绑定(Jquery) ...

  8. 转载: jQuery事件委托( bind() \ live() \ delegate()) [委托 和 绑定的故事]

    转载:http://blog.csdn.net/zc2087/article/details/7287429 随着DOM结构的复杂化和Ajax等动态脚本技术的运用,事件委托自然浮出了水面.jQuery ...

  9. JavaScript中事件委托(事件代理)详解

    在JavaScript的事件中,存在事件委托(事件代理),那么什么是事件委托呢? 事件委托在生活中的例子: 有三个同事预计会在周一收到快递.为签收快递,有两种办法:一是三个人在公司门口等快递:二是委托 ...

随机推荐

  1. 如何制作windows live writer绿色便携版

    如何制作windows live writer绿色便携版 2013年10月03日 ⁄ 综合 ⁄ 共 463字 ⁄ 字号 小 中 大 ⁄ 评论关闭 制作一个绿色便携版的wlw 1.首先下载 techli ...

  2. mac 10.14.5 [vue create的时候 mkdir没有权限]

    1.vue create的时候 mkdir没有权限 2.第一步.先检查系统是否开启了安全模式 csrutil status 3.如果是disabled.进去步骤5,直接查看文件夹权限.如果是enabl ...

  3. nginx+flask02---概念

    概念理解 wsgiref模块是python提供的,用于测试和学习的简单的WSGI服务器模块. 这个模块监听8000端口(监听端口可以改变),把Http请求,根据WSGI协议,转换application ...

  4. ${__setProperty 等常见jmeter参数相关博客汇总

    jmeter 控制线程组执行顺序   这个要配合全局变量.if和while来实现BeanShell取样器,全局变量:${__setProperty(newswitch,${switch1},)}if条 ...

  5. Oracle(11g)详细安装步骤

     最详细的Oracle安装步骤就在这里,话不多说直接给大家上安装Oracle的详细教程  如果没有安装包,可以先点击下载下载地址:http://download.oracle.com/otn/nt/o ...

  6. javascript当中火狐的firebug如何单步调试程序?

    [学习笔记] 2)火狐的firebug如何单步调试程序 马克-to-win:火狐中:工具/web 开发者/调试器,开始时没有文件,在浏览器当中点刷新按钮,文件就加载进来了. 文章转载自原文:https ...

  7. Java 包的理解与使用

    java中的包可以分为两种:内置包.用户自己定义的包.这里介绍的是用户自定义的包. 一.包的使用 1.创建PackageTest.java package com.packtest; public c ...

  8. 2019php面试大全

    一 .PHP基础部分 1.PHP语言的一大优势是跨平台,什么是跨平台? PHP的运行环境最优搭配为Apache+MySQL+PHP,此运行环境可以在不同操作系统(例如windows.Linux等)上配 ...

  9. 笔记-9:使用random库生成随机数

    random:主要目的是生成随机数 函数 说明 seed(a=None) 初始化随机数,默认值为当前系统时间 random() 生成一个[0.0,1.0)之间的随机数小数 randint(a,b) 生 ...

  10. go语言基础学习网址

    go指南 http://tour.studygolang.com/welcome/1