前一段时间面试的时候,面试官问了这么一个问题说:Jquery中on和bind有什么区别?当时就一脸懵逼了,因为虽然一直用$("#id").bind("click",function(){})或者$("#id").on("click",".class",function(){})。但是真的问起来,他俩有什么区别还真的不知道。

这样,我们先从写法来看,bind后边参数一般就是绑定事件加方法;on后边的参数相比bind来说,多了一个selector。这就是他们的区别。我们可以通过几个开发中很容易遇到的情况来分析:

情况一:在一个页面上,有多个块,每个块的class是不同的,但是块中的子元素的class是相同的。这个时候你要给content1下的子元素的child绑定事件,用bind肯定是不可以的,因为这样会对所有的child元素绑定事件。但是用on就可以完美解决,给特定唯一父元素下的子元素绑定事件。

<div class="content1"><div class="child"></div>
</div>
<div class="content2"><div class="child"></div>
</div>
<div class="content3"><div class="child"></div>
</div>
<script>/*$(".child").bind("click",function () {//bind绑定事件})*/$(".content1").on("click",".child",function () {//on绑定子元素事件
    })
</script>

情况二:对于动态加载的class进行绑定事件。页面对于js只在加载的时候渲染一次,用on就可以对新添加的进行重新渲染,给动态添加的也加上绑定事件。

<style>.show-red{color: red;}.show-yellow{color: yellow;}
</style>
<div class="content1">123</div>
<div class="content2">456</div>
<script>$(".content1").addClass("show-red");$(".content2").addClass("show-yellow");/*$(".show-red").bind("click",function () {//bind给show-red绑定事件})*/$(".content1").on("click",".show-red",function () {//on给show-red绑定事件
    })
</script>

综上:on可以将子元素的事件委托给父元素进行处理;on可以给动态添加的元素加上绑定事件。

转载于:https://www.cnblogs.com/Toby-hou/p/7927675.html

on和bind的区别,以及js重新渲染问题相关推荐

  1. Eval和Bind的区别

    1.Eval和Bind的区别 绑定表达式 <%# Eval("字段名") %> <%# Bind("字段名") %> 区别 1.eval ...

  2. jQuery里面的 .on 和 .bind 的区别

    on 和 bind 的区别 1. on 可以多一个 selector 参数,可以给子元素添加事件. bind 只能给自己添加事件 2. 使用on添加的事件比如给自己子集使用类选择器添加的 ,后来创建的 ...

  3. call(),apply()和bind()的区别和应用以及扩展

    首先三个方法的作用: 1:都是在特定的作用域中调用函数,等于设置函数体内this对象的值,以扩充函数赖以运行的作用域. 2:都是改变this的指向方向 区别: call()和apply()接受参数的方 ...

  4. append和appendTo的区别以及js中的appendChild用法

    append和appendTo的区别以及js中的appendChild用法 很多像我一样接触JS没多久的小白对append和appendTo的区别以及js中的appendChild用法都会有所模糊,下 ...

  5. if,if else,else if的区别,以js为例

    if,if else,else if的区别,以js为例 if 应用场景 if else 应用场景 else if 应用场景 关于if的嵌套 实用场景补充之if 实用场景补充之if else 实用场景补 ...

  6. Three.js的渲染过程

    主要基于WebGLRendere类的render方法开展,需要读者有基本的计算机图形知识,比如计算机图形管线(实时渲染管线)之类的. 在Three.js的渲染中,大概可以分为以下几步: 清空当前帧缓冲 ...

  7. vue使用html渲染组件,Vue.js在渲染组件之前填充数据

    我是Vue.js的新手,我试图创建一个没有成功的简单组件,它包含一个selectList,我试图填充它的选项数据来模拟Ajax请求,这是我的代码:Vue.js在渲染组件之前填充数据 HTML {{n. ...

  8. Three.js之渲染器

    本篇文章将详细讲解three.js中渲染器(renderer)的设置方法. three.js文档中渲染器的分支如下: Renderers CanvasRenderer DOMRenderer SVGR ...

  9. js动态渲染html页面,利用Scrapy-Splash抓取JS动态渲染的网页数据

    随着越来越多的网站开始用JS在客户端浏览器动态渲染网站,导致很多我们需要的数据并不能由原始的html中获取,再加上Scrapy本身并不提供JS渲染解析的功能,通常对这类网站数据的爬取我们一般采用两种方 ...

  10. Vue.js 服务器端渲染指南

    默认情况下,可以在浏览器中输出 Vue 组件,进行生成 DOM 和操作 DOM.然而,也可以将同一个组件渲染为服务器端的 HTML 字符串,将它们直接发送到浏览器. 简单理解是将组件或页面通过服务器生 ...

最新文章

  1. select 不要 用*
  2. 模型神器组合,yyds!
  3. Python字典:字典操作
  4. xps13安装linux系统,[操作系统]Dell XPS 13 (9360)安装配置 ubuntu 16.04 实现 win10 Linux双系统...
  5. P3352-[ZJOI2016]线段树【dp】
  6. Linux 命令之 sed -- 功能强大的流式文本编辑器
  7. java lambda sorted_Java8:Lambda表达式增强版Comparator和排序
  8. 纯js实现瀑布流布局及ajax动态新增数据
  9. python医药数据,PostgreSQL+Python实现药品规格数值与单位拆分
  10. 手机清除微信内置浏览器缓存
  11. 普林斯顿微积分读本篇十七:数列和级数,泰勒定理
  12. matlab R2021b 激活错误
  13. php 如何限制手机型号,修改Android设备信息,如修改手机型号为iPhone7黄金土豪版!_PHP教程...
  14. FineReport如何手动推送APP消息
  15. 2009中国情爱报告:超4成未婚女性担心嫁不出去
  16. 关于产品的一些思考——豌豆荚之应用下载
  17. PPT文档中如何插入超链接
  18. Python BDD 框架之lettuce
  19. 如何把Kotlin代码转成Java代码、把Java代码转成Kotlin代码
  20. 图片循环滚动代码(无缝滚动)

热门文章

  1. 产品思维的修炼–技术的必修课
  2. PHP pcre backtrack问题
  3. Unity案例-实现心电图效果
  4. PTA 1032 挖掘机技术哪家强(c语言)
  5. Python scrapy学习之爬取2k唯美壁纸详细过程笔记及讲解
  6. 乌克兰基辅一世遗修道院起火 现场火光照亮夜空
  7. verilog基础——always、initial
  8. 读书笔记005:《伤寒论》- 足阳明胃经
  9. python爬取百度云网盘资源-源码
  10. 今天公司来了个拿 30K 出来的测试,算是见识到了基础的天花板