事件委托 js高级

news/2024/7/10 23:11:02 标签: javascript, 前端, es6

在这里插入图片描述
在这里插入图片描述
每个事件返回的时候会进行冒泡 会冒泡他的父亲上所以利用他的身上的事件进行监听
他的父亲上会有target代表着每个子代

Event(给父亲添加事件的function里面的参数)对象提供了一个属性叫target,可以返回事件的目标节点,我们成为事件源,也就是说,target就可以表示为当前的事件操作的dom,但是不是真正操作dom,当然,这个是有兼容性的,标准浏览器用ev.target,IE浏览器用event.srcElement,此时只是获取了当前节点的位置,并不知道是什么节点名称,这里我们用nodeName来获取具体是什么标签名,这个返回的是一个大写的,我们需要转成小写再做比较

事件委托的作用:让一个项目中有100个组件想要添加事件的时候如果在每个组件上添加事件的话会极大的站用内存,如果在哪个组件的事件被调用的时候在给他定义方法并执行会极大的节省内存,提高性能

需求:这哟四个li用事件委托他给们设置点击事件弹出他的值

javascript"><!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
 <ul>
   <li>1你是</li>
   <li>2独一</li>
   <li>3无二</li>
   <li>4</li>

 </ul>
</body>

</html>
<script>
window.onload = function(){
  var oUl = document.querySelector("ul")
  oUl.onclick = function(ev){
    var ev = ev || window.event;
    var target = ev.target || ev.srcElement;
    if(target.nodeName.toLowerCase() == 'li'){
         alert(123);
         alert(target.innerHTML);
    }
  }

}
</script>

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


http://www.niftyadmin.cn/n/1371667.html

相关文章

浏览器的重排和重绘

重排 重绘 这些可以提高性能

generator函数

<script>function* a(){console.log("第一段");yield console.log("第二段");yieldconsole.log("第三段");}const ba()const cb.next()const db.next()const eb.next()// console.log(c); </script>

for of 循环

function* a(){console.log("第一段");yield "111"console.log("第二段");yield "222"console.log("第三段");}const ba() for(let value of b){console.log(value); }

Set数据结构

add <script> const snew Set(["夕阳","西下","断肠人"]) s.add("在天涯") console.log(s); </script>delete const snew Set(["夕阳","西下","断肠人"]) s.delete("断肠人") …

map数据结构

看下面的面试题 我们不能自定义数组里面的key map数据结构就解决了这一问题&#xff0c;map可以自定义数组的key set <script> const mnew Map([["name","aa"],["age",18],["name:a","age:b"] ]) m.set([function()…

js高级 事件轮询

一个简单代码的工作流程

Object.defineProperty理解

数据劫持&#xff0c;指的是在访问或者修改对象的某个属性时&#xff0c;通过一段代码拦截这个行为&#xff0c;进行额外的操作或者修改返回结果。 vue使用的数据劫持用的是Object.defineProperty enumerable 当且仅当该属性的 enumerable 键值为 true 时&#xff0c;该属性…

函数,构造函数中使用call,apply,bind 以及他们的区别

函数中使用 bind function eat(food,name){this.foodfoodthis.callcall } function weather(food,name,what){console.log("今天的天气是"what);console.log("我喜欢吃"food);console.log("我是"name) } weather.bind(eat,"肉",&quo…