jquery绑定事件 bind和on的用法与区别分析


Posted in jQuery onMay 22, 2020

本文实例讲述了jquery绑定事件 bind和on的用法与区别。分享给大家供大家参考,具体如下:

bind和on都是给元素绑定事件用的,其最大的区别就是事件冒泡

事件冒泡也是委托事件的原型,事件委托就是子类的事情委托给父类的去做

最直观的区别就是on绑定比bind绑定多一个参数'childSelector'

语法

$(selector).on(event,childSelector,data,function)

参数 描述
event 必需。规定要从被选元素移除的一个或多个事件或命名空间。 由空格分隔多个事件值,也可以是数组。必须是有效的事件。
childSelector 可选。规定只能添加到指定的子元素上的事件处理程序(且不是选择器本身,比如已废弃的 delegate() 方法)。
data 可选。规定传递到函数的额外数据。
function 可选。规定当事件发生时运行的函数。

$(selector).bind(event,data,function,map)

参数 描述
event 必需。规定添加到元素的一个或多个事件。 由空格分隔多个事件值。必须是有效的事件。
data 可选。规定传递到函数的额外数据。
function 必需。规定当事件发生时运行的函数。
map 规定事件映射 ({event:function, event:function, ...}),包含要添加到元素的一个或多个事件,以及当事件发生时运行的函数。
  • bind只能给符合条件的元素本身添加事件
  • on可以将子元素的事件委托给父元素进行处理,而且可以给动态添加的元素加上绑定事件

也就是对于新添加的元素如果是on绑定,符合条件的新元素也会绑定事件,

如果是bind则不影响新元素

比如下例:

<ul>
  <li>第一个子元素<li/>
  <li>第二个子元素<li/>
  <li>第三个子元素<li/>
</ul>

我们想给所有li添加click事件,可以用on:

$('ul').on('click','li', function () {
    console.log($(this).text());
});

也可以用bind:

$('ul li').bind('click', function () {
    console.log($(this).text());
});

有什么区别呢?

第一用on绑定实际上是委托给了父级ul,也就是只给 一个元素绑定了事件

第二个是用选择器选择了ul下的所有li元素 依次绑定了事件

假如有很多很多子元素区别就很大了, bind会严重影响性能!

假如这时候新添一个li:

$('ul').append('<li>第四个子元素<li>');
  • 如果是on绑定则这个li也会有点击事件
  • 如果是bind则没有

感兴趣的朋友可以使用在线HTML/CSS/JavaScript代码运行工具:http://tools.3water.com/code/HtmlJsRun测试上述代码运行效果。

希望本文所述对大家jQuery程序设计有所帮助。

jQuery 相关文章推荐
jQuery用noConflict代替$的实现方法
Apr 12 jQuery
jquery实现tab选项卡切换效果(悬停、下方横线动画位移)
May 05 jQuery
jQuery遮罩层实例讲解
May 11 jQuery
jQuery获取table表中的td标签(实例讲解)
Jul 28 jQuery
jQuery Easyui Treegrid实现显示checkbox功能
Aug 08 jQuery
jQuery实现左右滑动的toggle方法
Mar 03 jQuery
jQuery实现table表格信息的展开和缩小功能示例
Jul 21 jQuery
jQuery实现根据身份证号获取生日、年龄、性别等信息的方法
Jan 09 jQuery
JQuery实现ul中添加LI和删除指定的Li元素功能完整示例
Oct 16 jQuery
jQuery实现简单飞机大战
Jul 05 jQuery
Jquery 获取相同NAME 或者id删除行操作
Aug 24 jQuery
jQuery实现本地存储
Dec 22 jQuery
jQuery实现移动端笔触canvas电子签名
May 21 #jQuery
jQuery HTML获取内容和属性操作实例分析
May 20 #jQuery
jQuery HTML设置内容和属性操作实例分析
May 20 #jQuery
jquery html添加元素/删除元素操作实例详解
May 20 #jQuery
jQuery HTML css()方法与css类实例详解
May 20 #jQuery
jQuery 隐藏/显示效果函数用法实例分析
May 20 #jQuery
jQuery 淡入/淡出效果函数用法分析
May 19 #jQuery
You might like
PHP中mb_convert_encoding与iconv函数的深入解析
2013/06/21 PHP
PHP命名空间(Namespace)简明教程
2014/06/11 PHP
php实现通过ftp上传文件
2015/06/19 PHP
PHP编写学校网站上新生注册登陆程序的实例分享
2016/03/21 PHP
PHP PDOStatement::closeCursor讲解
2019/01/30 PHP
PHP Cli 模式设置进程名称的方法
2019/06/12 PHP
php使用自带dom扩展进行元素匹配的原理解析
2020/05/29 PHP
JavaScript实际应用:innerHTMl和确认提示的使用
2006/06/22 Javascript
鼠标事件延时切换插件
2011/03/12 Javascript
jquery获取div宽度的实现思路与代码
2013/01/13 Javascript
javascript学习笔记(一)基础知识
2014/09/30 Javascript
Node.js与Sails ~项目结构与Mvc实现及日志机制
2015/10/14 Javascript
JSON简介以及用法汇总
2016/02/21 Javascript
Angularjs的ng-repeat中去除重复数据的方法
2016/08/05 Javascript
BootStrap Typeahead自动补全插件实例代码
2016/08/10 Javascript
js阻止冒泡和默认事件(默认行为)详解
2016/10/20 Javascript
H5移动端适配 Flexible方案
2016/10/24 Javascript
JS双击变input框批量修改内容
2016/12/12 Javascript
深入浅析AngularJS中的一次性数据绑定 (bindonce)
2017/05/11 Javascript
JS实现的抛物线运动效果示例
2018/01/30 Javascript
js删除数组中的元素delete和splice的区别详解
2018/02/03 Javascript
Vue实现带进度条的文件拖动上传功能
2018/02/23 Javascript
[41:52]DOTA2-DPC中国联赛 正赛 CDEC vs Dynasty BO3 第二场 2月22日
2021/03/11 DOTA
python中实现php的var_dump函数功能
2015/01/21 Python
python中类和实例如何绑定属性与方法示例详解
2017/08/18 Python
Python实现链表反转的方法分析【迭代法与递归法】
2020/02/22 Python
python按照list中字典的某key去重的示例代码
2020/10/13 Python
GUESS西班牙官方网上商城:美国服饰品牌
2017/03/15 全球购物
Clarks鞋澳大利亚官方网站:Clarks Australia
2019/12/25 全球购物
2014年教学管理工作总结
2014/12/02 职场文书
2014年内部审计工作总结
2014/12/09 职场文书
2015年社区关工委工作总结
2015/04/03 职场文书
mybatis使用oracle进行添加数据的方法
2021/04/27 Oracle
Vue如何实现组件间通信
2021/05/15 Vue.js
SQL Server中的逻辑函数介绍
2022/05/25 SQL Server
CSS SandBox应用场景及常见问题
2022/06/25 HTML / CSS