事件委派允许我们将事件绑定到一个元素包括它匹配的子元素(无论存在的还是不存在的)。

我们通过一个例子来感受一下事件委派

<div id="container"><ul id="list"><li><a href="http://domain1.com">Item #1</a></li><li><a href="eventDemo.html">Item #2</a></li><li><a href="nothispath.html">Item #3</a></li><li><a href="http://domain4.com">Item #4</a></li></ul></div>

然后我们将click事件直接绑定到a元素

$( "#list a" ).on( "click", function( event ) {event.preventDefault();console.log( $( this ).text() );
});

现在一切都运行良好,但是我们添加一个元素后

$("#list").append(' <li><a href="http://domain1.com">Item #5</a></li>');

然后再点击新添加的元素,会执行默认的行为(跳到另一个链接)。

如果我们也想要匹配新增的元素该怎么办?这里就用到了事件委派,事件委派主要的原理就是利用了事件传播

事件传播

什么是事件传播?

如上面的例子,当我们点击a元素后,事件会沿着<a> <li> <ul #list> <div #container> <body><html>传到document root,

当点击到绑定事件的元素后,就相当于点击了整个页面,这就叫做event bubbling 或者event propagation.

要实现上面的功能只需将a元素移到on里面就可以了

$( "#list" ).on( "click", "a", function( event ) {event.preventDefault();console.log( $( this ).text() );
});

这就是所谓的event delegation,利用事件委派的最佳实践就是将事件绑定到将来可能产生的元素。

转载于:https://www.cnblogs.com/xviubu/p/3463953.html

jQuery 学习笔记 事件委派相关推荐

  1. jquery学习之事件委派

    一.定义 事件委派的定义就是,把原来加给子元素身上的事件绑定在父元素身上,就是把事件委派给父元素. 二.版本 从jQuery1.7开始,jQuery引入了全新的事件绑定机制,on()和off()两个函 ...

  2. jQuery学习笔记——事件

    何为事件 就是你的鼠标,键盘等对网页元素进行的操作. 常见事件 鼠标事件 键盘事件 表单事件 文档/窗口事件 click keypress submit load dblclick keydown c ...

  3. jQuery学习笔记之DOM操作、事件绑定(2)

    jQuery学习笔记之DOM操作.事件绑定(2) --------------------学习目录------------------------ 4.DOM操作 5.事件绑定 源码地址: https ...

  4. jQuery学习笔记--目录

    jQuery学习笔记--Helloworld jQuery学习笔记--DOM对象和jQuery对象 jQuery学习笔记--jQuery选择器 jQuery学习笔记--jQuery的DOM操作 jQu ...

  5. jQuery学习笔记:Ajax(二)

    接上篇"jQuery学习笔记:Ajax(一)". 3.jQuery.get(url,[data],[callback],[type])通过远程 HTTP GET 请求载入信息. 这 ...

  6. jQuery学习笔记(二)

    jQuery学习笔记(二) 二.管理jQuery包装集 1.创建新的元素 使用HTML DOM 创建元素 var select=document.createElement("select& ...

  7. javaweb(03) jQuery学习笔记

    javaweb(03) jQuery学习笔记 jQuery介绍 什么是jQuery jQuery,顾名思义,也就是 JavaScript 和查询(Query),它就是辅助 JavaScript 开发的 ...

  8. jQuery学习笔记开篇

    开始学习人见人爱花见花开的jQuery. jQuery是一个轻量级,快速简洁的javascript框架.它的官方网址是(http://jquery.com/).jQuery的优点是它容量小巧,简洁和简 ...

  9. jquery学习笔记及常用函数封装

    二.JQuery 学习笔记及常用函数封装 https://download.csdn.net/download/weixin_42530002/13087988 1.JQuery入门 (1).css选 ...

最新文章

  1. Vue报错:Uncaught RangeError: Maximum call stack size exceeded
  2. ASP.NET MVC 音乐商店 - 1 创建项目
  3. 用cookie实现保存密码
  4. nginx日志分析查询异常请求IP之狙击网络黑客
  5. shell后台执行命令-crontab
  6. 学习笔记(40):Python实战编程-文本
  7. 在Oracle中使用JDBC插入功能
  8. 如何将单机版的Eureka服务改为集群版Eureka服务
  9. [RMAN]控制文件的恢复
  10. Codeforces Beta Round #1 B. Spreadsheets 模拟
  11. 一个关于传奇3G游戏的感言
  12. Linux常用视频播放器
  13. 五子棋ai:极大极小搜索和α-β剪枝算法的思想和实现(qt和c++)(三)极大极小搜索和α-β剪枝算法
  14. 【随笔】移动端input type|语义与IOS按键
  15. 戴尔r410服务器虚拟磁盘,DELL服务器R410原装 SAS 6/IR RAID卡 阵列控制器卡 支持RAID0,1...
  16. win10开发环境搭建之wsl2(Ubuntu)+Terminal+docker
  17. 基于51单片机俄罗斯方块游戏电路设计
  18. 堪比平板的顶级满血970大屏旗舰解密!荣耀Note10抢先体验!
  19. [笔记分享] [Exception] 内核空间异常之流程小结
  20. 一些关于HTML与CSS的总结与实际应用

热门文章

  1. [转]# python中init和new的区别
  2. 通向财务自由之路06_适应大环境的交易策略
  3. HMM隐马尔可夫模型(HMM)攻略
  4. 职称计算机xp系统试题,2020年职称计算机WindowsXP测试题及答案.doc
  5. RecyclerView的ItemAnimator
  6. 华硕 固件 Linux内核,ubuntu 64位编译华硕AC1200G+固件
  7. 杭州自学python爬虫_金华自学python网络爬虫直播
  8. geoserver发布瓦片数据_geoserver地图发布服务教程(3)——快速配置矢量样式
  9. 在位置 0 处没有任何行。_我家孩子最爱这个小零食,外酥里糯,没有任何添加剂,0失败教程...
  10. 蓝桥杯 2018年蓝桥杯C语言大学C组 C/C++