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设置图片等比例缩小的方法
Apr 29 jQuery
jQuery zTree树插件动态加载实例代码
May 11 jQuery
简单谈谈require模块化jquery和angular的问题
Jun 23 jQuery
jQuery.Ajax()的data参数类型详解
Jul 23 jQuery
jQuery实现手势解锁密码特效
Aug 14 jQuery
jQuery取得元素标签名称小结(附代码)
Aug 16 jQuery
20个最常见的jQuery面试问题及答案
May 23 jQuery
使用jquery DataTable和ajax向页面显示数据列表的方法
Aug 09 jQuery
jQuery实现模拟搜索引擎的智能提示功能简单示例
Jan 27 jQuery
基于Bootstrap和JQuery实现动态打开和关闭tab页的实例代码
Jun 10 jQuery
Jquery 获取相同NAME 或者id删除行操作
Aug 24 jQuery
jQuery zTree如何改变指定节点文本样式
Oct 16 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生成excel时单元格内换行问题的解决方法
2010/08/26 PHP
解析在apache里面给php写虚拟目录的详细方法
2013/06/24 PHP
PHP后期静态绑定实例浅析
2018/12/21 PHP
50个优秀经典PHP算法大集合 附源码
2020/08/26 PHP
js 关于=+与+=日期函数使用说明(赋值运算符)
2011/11/15 Javascript
JavaScript中:表达式和语句的区别[译]
2012/09/17 Javascript
js读取cookie方法总结
2014/10/31 Javascript
原生js实现日期联动
2015/01/12 Javascript
Javascript函数的参数
2015/07/16 Javascript
JS简单测试循环运行时间的方法
2016/09/04 Javascript
微信小程序 wx:key详细介绍
2016/10/28 Javascript
微信小程序 配置文件详细介绍
2016/12/14 Javascript
bootstrap table 表格中增加下拉菜单末行出现滚动条的快速解决方法
2017/01/05 Javascript
漂亮实用的页面loading(加载)封装代码
2017/02/03 Javascript
Windows下快速搭建NodeJS本地服务器的步骤
2017/08/09 NodeJs
微信小程序手机号码验证功能的实例代码
2018/08/28 Javascript
js中获取URL参数的共用方法getRequest()方法实例详解
2018/10/24 Javascript
Mint UI组件库CheckList使用及踩坑总结
2018/12/20 Javascript
JavaScript中callee和caller的区别与用法实例分析
2019/06/28 Javascript
浅入深出Vue之组件使用
2019/07/11 Javascript
layui 地区三级联动 form select 渲染的实例
2019/09/27 Javascript
在Python中使用poplib模块收取邮件的教程
2015/04/29 Python
python3 selenium 切换窗口的几种方法小结
2018/05/21 Python
python的pyecharts绘制各种图表详细(附代码)
2019/11/11 Python
django从后台返回html代码的实例
2020/03/11 Python
浅谈selenium如何应对网页内容需要鼠标滚动加载的问题
2020/03/14 Python
Pyspark读取parquet数据过程解析
2020/03/27 Python
如何使用 Flask 做一个评论系统
2020/11/27 Python
HTML5中canvas中的beginPath()和closePath()的重要性
2018/08/24 HTML / CSS
松本清官方海外旗舰店:日本最大的药妆连锁店
2017/11/21 全球购物
乌克兰移动电子产品和相关配件的在线商店:iTMag
2020/03/16 全球购物
技术股东合作协议书
2014/12/02 职场文书
简爱电影观后感
2015/06/10 职场文书
Spring Boot 排除某个类加载注入IOC的操作
2021/08/02 Java/Android
Python加密技术之RSA加密解密的实现
2022/04/08 Python
Python matplotlib绘制条形统计图 处理多个实验多组观测值
2022/04/21 Python