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把获取到的input值转换成json
May 15 jQuery
使用vue与jquery实时监听用户输入状态的操作代码
Sep 19 jQuery
jQuery实现可兼容IE6的遮罩功能详解
Sep 19 jQuery
jQuery ajax读取本地json文件的实例
Oct 31 jQuery
jQuery 导航自动跟随滚动的实现代码
May 30 jQuery
jQuery实现数字自动增加或者减少的动画效果示例
Dec 11 jQuery
jQuery选择器之基本选择器用法实例分析
Feb 19 jQuery
使用jquery的cookie实现登录页记住用户名和密码的方法
Mar 13 jQuery
jQuery实现动态生成年月日级联下拉列表示例
May 11 jQuery
js/jQuery实现全选效果
Jun 17 jQuery
详解jQuery中的prop()使用方法
Jan 05 jQuery
jQuery实现点击滚动到指定元素上的方法分析
Mar 19 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操作mysql执行数据库查询的一些常用操作汇总
2013/06/24 PHP
javascript 无提示关闭窗口脚本
2009/08/17 Javascript
JS setCapture 区域外事件捕捉
2010/03/18 Javascript
javascript重复绑定事件造成的后果说明
2013/03/02 Javascript
jQuery源码解读之addClass()方法分析
2015/02/20 Javascript
JavaScript中的原型prototype完全解析
2016/05/10 Javascript
JS简单实现仿百度控制台输出信息效果
2016/09/04 Javascript
vue.js移动端app实战1:初始配置详解
2017/07/24 Javascript
浅谈jquery中ajax跨域提交的时候会有2次请求的问题
2017/11/10 jQuery
微信小程序 Animation实现图片旋转动画示例
2018/08/22 Javascript
用Cordova打包Vue项目的方法步骤
2019/02/02 Javascript
浅谈VUE防抖与节流的最佳解决方案(函数式组件)
2019/05/22 Javascript
微信小程序自定义波浪组件使用方法详解
2019/09/21 Javascript
Python新手实现2048小游戏
2015/03/31 Python
django 使用 request 获取浏览器发送的参数示例代码
2018/06/11 Python
python读取word文档,插入mysql数据库的示例代码
2018/11/07 Python
Django中使用Celery的方法示例
2018/11/29 Python
对Python 两大环境管理神器 pyenv 和 virtualenv详解
2018/12/31 Python
Python函数必须先定义,后调用说明(函数调用函数例外)
2020/06/02 Python
浅谈keras中的后端backend及其相关函数(K.prod,K.cast)
2020/06/29 Python
瑞典的玛丽小姐:Miss Mary of Sweden
2019/02/13 全球购物
好邻里事迹材料
2014/01/16 职场文书
追悼会子女答谢词
2014/01/28 职场文书
水利公司纪检监察自我鉴定
2014/02/25 职场文书
在职党员进社区活动总结
2014/07/05 职场文书
月度优秀员工获奖感言
2014/08/16 职场文书
2014年团员学习十八大思想汇报
2014/09/13 职场文书
2015年学校保卫部工作总结
2015/05/11 职场文书
《观潮》教学反思
2016/02/17 职场文书
导游词之开封禹王台风景区
2019/12/02 职场文书
浅谈Redis的几个过期策略
2021/05/27 Redis
python 经纬度求两点距离、三点面积操作
2021/06/03 Python
java设计模式--原型模式详解
2021/07/21 Java/Android
JavaScript高级程序设计之基本引用类型
2021/11/17 Javascript
分享几种python 变量合并方法
2022/03/20 Python
详解Flutter网络请求Dio库的使用及封装
2022/04/14 Java/Android