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使用unlock.js插件实现滑动解锁
Apr 04 jQuery
jQuery Position方法使用和兼容性
Aug 23 jQuery
jQuery 实现鼠标画框并对框内数据选中的实例代码
Aug 29 jQuery
基于jQuery Ajax实现下拉框无刷新联动
Dec 06 jQuery
jquery获取select选中值的文本,并赋值给另一个输入框的方法
Aug 21 jQuery
jQuery+PHP实现上传裁剪图片
Jun 29 jQuery
jQuery实现的自定义轮播图功能详解
Dec 28 jQuery
jQuery实现为table表格动态添加或删除tr功能示例
Feb 19 jQuery
JQuery事件委托原理与用法实例分析
May 13 jQuery
jquery中为什么能用$操作
Jun 18 jQuery
jQuery Raty星级评分插件使用方法实例分析
Nov 25 jQuery
jQuery 判断元素是否存在然后按需加载内容的实现代码
Jan 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语法(4)
2006/10/09 PHP
深入Memcache的Session数据的多服务器共享详解
2013/06/13 PHP
深入Nginx + PHP 缓存详解
2013/07/11 PHP
ThinkPHP空模块和空操作详解
2014/06/30 PHP
基于PHP实现假装商品限时抢购繁忙的效果
2015/10/16 PHP
微信自定义菜单的创建/查询/取消php示例代码
2016/08/05 PHP
利用PHP获取网站访客的所在地位置
2017/01/18 PHP
Yii框架引用插件和ckeditor中body与P标签去除的方法
2017/01/19 PHP
jQuery拖动图片删除示例
2013/05/10 Javascript
Javascript简单实现可拖动的div
2013/10/22 Javascript
js history对象简单实现返回和前进
2013/10/30 Javascript
js使用removeChild方法动态删除div元素
2014/08/01 Javascript
Nodejs学习笔记之入门篇
2015/04/16 NodeJs
理解javascript中的原型和原型链
2015/07/30 Javascript
深入理解JavaScript中的对象复制(Object Clone)
2016/05/18 Javascript
js中的eval()函数把含有转义字符的字符串转换成Object对象的方法
2016/12/02 Javascript
React-Native使用Mobx实现购物车功能
2017/09/14 Javascript
微信小程序的日期选择器的实例详解
2017/09/29 Javascript
微信小程序非跳转式组件授权登录的方法示例
2019/05/22 Javascript
JS实现盒子拖拽效果
2020/02/06 Javascript
jQuery zTree如何改变指定节点文本样式
2020/10/16 jQuery
[15:39]教你分分钟做大人:龙骑士
2014/10/30 DOTA
Python fileinput模块使用介绍
2014/11/30 Python
Python实现滑动平均(Moving Average)的例子
2019/08/24 Python
Flask之pipenv虚拟环境的实现
2019/11/26 Python
如何以Winsows Service方式运行JupyterLab
2020/08/30 Python
HTML5 Geolocation API的正确使用方法
2018/12/04 HTML / CSS
印度和世界各地的精美产品:Ikka Dukka
2018/02/12 全球购物
基层干部十八大感言
2014/01/19 职场文书
学生打架检讨书大全
2014/01/23 职场文书
2014学年自我鉴定
2014/02/23 职场文书
推荐信格式范文
2014/05/09 职场文书
解除租房协议书
2014/12/03 职场文书
2014年保卫工作总结
2014/12/05 职场文书
2014年度个人总结范文
2015/03/09 职场文书
uniapp 微信小程序 自定义tabBar 导航
2022/04/22 Javascript