当前位置: 首页 > news >正文

福田做棋牌网站建设多少钱微信投票网站开发

福田做棋牌网站建设多少钱,微信投票网站开发,小程序模板编辑,做我女朋友的套路网站目录 一、事件委托#xff08;事件代理#xff09; 1、事件委托的优点 2、事件委托的缺点 3、为什么要使用事件委托 4、事件委托实现原理 5、DOM事件流 6、事件委托的实现方法 1、vue写法 1.1、html代码 1.2、js代码 2、原生的写法其实也差不多#xff1a; 2.1、…目录 一、事件委托事件代理 1、事件委托的优点 2、事件委托的缺点 3、为什么要使用事件委托 4、事件委托实现原理 5、DOM事件流 6、事件委托的实现方法 1、vue写法 1.1、html代码 1.2、js代码 2、原生的写法其实也差不多 2.1、html代码 2.2、js代码 二、阻止事件冒泡 三、取消默认事件 四、总结 一、事件委托事件代理 将原本需要绑定在子元素上的事件监听器委托在父元素上让父元素充当事件监听的职务。 利用事件冒泡的特性在父节点上响应事件而不是在子节点上响应事件的技术。它能够改善性能因为只需要在父元素上设置一次事件监听器就可以管理同一类型的所有子元素的事件。 即事件从最深的节点开始逐步向上传播。在事件冒泡过程中父元素会捕获到子元素的事件并进行分析。通过查看event对象的属性可以确定是哪个子元素的事件从而执行相应的处理逻辑。 使用事件委托能够避免对每个子元素单独设置事件监听器降低了与DOM交互的次数提高了页面的整体运行性能。同时事件委托也具有更高的灵活性和可维护性不需要操作大量的DOM元素。 在Vue中可以利用v-on指令或符号来绑定事件监听器并在父元素上设置事件委托。例如可以在父元素上设置一个click事件监听器然后在子元素上绑定一个click事件通过事件委托实现父元素对子元素事件的响应。 1、事件委托的优点 节省内存dom与js的关联减少事件的注册增加子元素也无需再注册事件 2、事件委托的缺点 获取绑定的节点数据会相对麻烦一点 3、为什么要使用事件委托 在日常开发中很经常我们会遇到个问题就是在长列表数据较多的时候而又需要对子元素注册一些事件如onClick,就会造成比较大的内存开支很耗费性能也可能会造成页面卡顿等等 所以可以通过在父元素上添加click监听而不是在子元素上注册事件 如果数据量比较少就可忽略不计 此外事件处理程序需要与 DOM 节点进行交互访问 DOM 的次数越多引起浏览器重绘和重排的次数也就越多从而影响页面的性能。 4、事件委托实现原理 事件委托是利用事件的冒泡原理来实现的大致可以分为三个步骤 确定要添加事件元素的父级元素给父元素定义事件监听子元素的冒泡事件使用 event.target 来定位触发事件冒泡的子元素。 5、DOM事件流 事件流描述的是从页面中接收事件的顺序。事件发生时会在元素节点之间按照特定的顺序传播这个传播过程即DOM事件流。 比如我们给页面中的一个div注册了单击事件当你单击了div时也就单击了body单击了html单击了document。 DOM 事件流会经历3个阶段 捕获阶段事件从文档的根节点流向目标对象。 事件从最不精确的对象(document 对象)开始触发然后到最精确(也可以在窗口级别捕获事件不过必须由开发人员特别指定)与事件冒泡相反事件会从最外层开始发生直到最具体的元素。 当前目标阶段在目标对象上被触发。冒泡阶段回溯到文档的根节点。 微软提出了名为事件冒泡的事件流。事件按照从最特定的事件目标到最不特定的事件目标(document对象)的顺序触发。 6、事件委托的实现方法 1、vue写法 1.1、html代码 div idappdiv idevent-agent clickeventAgentp v-for(item, index) in list :keyindex :data-nameitem.name :data-indexindex{{item.name}}/p/div /div 获取节点参数 (data-index、data-name则在 $event.target.dataset  { index: xxx, name: xxx } 中取值 1.2、js代码 data() {return { list: [{ id: 1, name: kmj1},{ id: 2, name: kmj2},{ id: 3, name: kmj3},{ id: 4, name: kmj4}]   } }, methods: { // 事件委托eventAgent(e) {const target e.target; console.log(target )// 注意 e.target.nodeName 的元素名是大写的if (target   target.nodeName P) {const dataset target .dataset;console.log($event.target.dataset : dataset ); // $event.target.dataset :  { name: xxx, index: xxx }}} } 2、原生的写法其实也差不多 2.1、html代码 div idevent-agentp :data-nameItem1 :data-index0Item 1/pp :data-nameItem2 :data-index1Item 2/pp :data-nameItem3 :data-index2Item 3/pp :data-nameItem4 :data-index3Item 4/pp :data-nameItem5 :data-index4Item 5/pp :data-nameItem6 :data-index5Item 6/p /div 2.2、js代码 document.getElementById( event-agent).onclick function(event){ // 兼容Ie的写法event event || window.event;var  target event.target || event.srcElement;  // 注意 e.target.nodeName 的元素名是大写的if (target   target.nodeName P) {const dataset target .dataset;console.log($event.target.dataset : dataset ); // $event.target.dataset :  { name: xxx, index: xxx }} }; // 也可以用这种方式其实都差不多的 // 冒泡阶段处理程序   document.getElementById( event-agent).addEventListener( click, (e) {},   false); // 捕获阶段处理程序 document.getElementById( event-agent).addEventListener( click, (e) {},   true); 二、阻止事件冒泡 W3C的方法是e.stopPropagation()IE则是使用e.cancelBubble true。 stopPropagation是事件的一个方法作用是阻止目标元素的事件冒泡但是不会组织默认行为。 function stopBubble(e) {  //如果提供了事件对象则这是一个非IE浏览器  if ( e e.stopPropagation ) //因此它支持W3C的stopPropagation()方法 e.stopPropagation();  else //否则我们需要使用IE的方式来取消事件冒泡 window.event.cancelBubble true;  } 三、取消默认事件 W3C的方法是e.preventDefault()IE则是使用e.returnValue false。 preventDefault()是事件对象(Event)的一个方法作用是取消一个目标元素的默认行为。既然是默认行为那么元素必须有默认行为才能被取消如果元素本身就没有默认行为调用自然就无效了。什么元素有默认行为呢如链接\a href提交按钮input type”submit”等这些都有默认行为。 function preventDefault(e){if(e e.preventDefault){e.preventDefault();}else{window.event.returnValue false;}return false; } 四、总结 要使用事件委托需要保证事件能够发生冒泡适合使用事件委托的事件有 click、mousedown、mouseup、keydown、keyup、keypress 等。需要注意的是虽然 mouseover 和 mouseout 事件也会发生事件冒泡但处理起来非常麻烦所以不推荐在 mouseover 和 mouseout 事件中使用事件委托。 另外对于不会发生事件冒泡的事件例如 load、unload、abort、focus、blur 等则无法使用事件委托。
http://www.w-s-a.com/news/767943/

相关文章:

  • 广州天河建站公司com域名注册多少钱
  • 成都网站建设推广好vs2013如何做网站
  • 茶叶网站建设模板企业网站备案要多少钱
  • 怎么查网站找谁做的win主机伪静态规则 wordpress
  • 轻云服务器菁英版 多个网站北京it外包服务商
  • 售后服务 网站建设阳江seo优化
  • 网站建设后怎么赚钱wordpress调用导航栏
  • 特产网站设计六色网站
  • 服务器网站备案做网站公司如何赚钱
  • 怎样进行站点优化荣成市有做网站的吗
  • 合肥建设工会网站芜湖做网站建设公司
  • 玉林市住房和城乡建设局网站网站开发百灵鸟
  • 网站怎么做双机房切换建设部网站2015年第158号
  • 郑州服务设计公司网站色块的网站
  • 网站设计所用到的技术做网站添加mp3
  • 凡科做的微网站怎样连接公众号seo李守洪排名大师
  • 温州网站开发网站的制作东莞寮步伟易达电子厂
  • 北京网站设计制作关键词优化微信小程序开发推广网站建设优化规划书
  • 杭州临平网站建设开发公司将购房款划给总公司的法律责任
  • 广东外贸网站推广分类wordpress
  • 聚美优品网站建设方案商城和营销型网站建设
  • 比较著名的seo网站如何建设网站?
  • 如何做商业网站最火wordpress主题
  • 建设网站需要哪些软硬件条件wordpress文章页标题优化
  • 网站建设功能需求文档wordpress 1g1核1m
  • 学做窗帘要下载哪个网站用户反馈数据分析软件园
  • 宁晋网站建设多少钱产品宣传推广方式有哪些
  • delphi做网站阿里巴巴官网首页登录入口
  • 游戏网站怎么建设新建wordpress模板
  • 网络服务器是指兰州网站seo诊断