首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

jQuery on()方法不绑定像live()这样的事件

jQuery on() 方法不绑定像 live() 这样的事件

jQuery 的 on() 方法是 jQuery 1.7 版本中新增的替代 live() 方法的功能,用于简化事件委托操作。与 live() 不同的是,on() 不需要与特定的元素关联,当事件被触发时,on() 会自动处理事件。

概念与分类

  1. 事件委托:通过将事件监听器添加到父元素,而不是直接放在目标元素上,实现事件委托。
  2. 事件捕获:当事件冒泡到父元素时,事件监听器执行。

优势

  1. 性能优化:通过在父元素上添加监听器,可以降低目标元素上的负荷,提高性能。
  2. 简化代码:使用 on() 方法,可以避免编写与特定元素关联的监听器,使代码更简洁。

应用场景

  1. 动态元素:当添加或删除子元素时,使用 on() 方法可以轻松处理事件。
  2. 已存在的元素:对已存在的元素进行监听,无需重新绑定事件。
  3. 多元素监听:在一个父元素上监听多个事件,简化代码。

推荐的腾讯云相关产品

  1. 云服务器(CVM):安全稳定、弹性扩展的云计算服务。
  2. 数据库服务:包括关系型、非关系型、时序等多种数据库产品,如云数据库 TencentDB、腾讯云分布式数据库等。
  3. 存储服务:提供对象存储、文件存储等多种存储服务。
  4. 内容分发网络(CDN):高速、稳定的全球内容分发加速服务。
  5. 安全服务:包括 DDoS 防护、Web 应用防火墙、安全加固等多重安全服务。

产品介绍链接地址

  1. 云服务器 CVM云服务器CVM产品页面
  2. 数据库服务数据库服务产品页面
  3. 存储服务存储服务产品页面
  4. 内容分发网络 CDNCDN产品页面
  5. 安全服务安全服务产品页面
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

JQuery 事件绑定生效

一个同时问我,JQuery事件绑定为什么生效,最好通过查找,发现了问题。 一般而言,JQuery事件绑定生效,是一些新手经常遇到问题,其实都是简单问题,大概分两种情况。...在未加载完成之前,通过$("#button1").click方法来进行事件绑定,由于此时未加载完成,实际上$("#button1")是一个空数组,所以最终结果是未对任何元素进行事件绑定。...那么如何解决这个问题呢,其实这个问题本不应该发生,一般新手比较容易出问题,解决方式很简单,把事件绑定放在加载完成之后,JQuery做法是: $(function(){ $("#button1").click...方法被创建出来,然后被加入到body中,然后绑定事件,之后从body中移除,然后在加入body中: var div = $("button2<...,JQuery 会自动把绑定事件移除掉了,然后在加入时候,事件绑定已经不存在了;这种情况应该如何解决呢?

2.5K30

jQuery 查找on事件绑定元素绑定元素方法

jQuery 查找on事件绑定元素绑定元素方法 遇到问题 今天写了一个JQ插件,结果里面有一点问题.让我很郁闷.问题演示代码如下 $box.on('click', 'img', function(...){ $(this) }); 如上代码,当我点击这个图片时候 $(this) 是指 img ....当然这是正确. 而我需要找到 $box 也就是 img 父级. 如果不是插件的话,我当然可以根据它ID或者CLASS来进行查询.问题是,我是写插件,也就是说,我并不知道它这些信息是什么....解决方法 很多基础东西不理解,就会出现我这样问题.如同事所说,你是还不会爬呢,都学上跑了.因此,踩坑无数啊....解决方法如下: $box.on('click', 'img', function(){ $box.has($(this)) }); 如上,通过 .has 操作,就能找到唯一父级被绑定元素了.

4.5K10

jquery 事件绑定及取消 bind live delegate on one区别 (超详细且通俗易懂)

; }); 这样写跟普通写法没区别  就没必要使用绑定事件方法了 obj.click(function(){}) 注:js同一个dom元素多次绑定同一事件,只会执行最后一次事件,所以如果有这种需求,...需要使用addEventListener方法添加事件jquery则不会 它会全部执行,两者都是同时执行,并不是按顺序一一执行。...和bind方法有两个不同 1.没有map不能单独规定事件 2.live方法绑定事件会应用于当前现有的元素以及未来元素,也就是事件委托机制,把节点处理统一委托给了根节点document,所以后面动态添加新节点同样会有相同事件...()方法只能放在直接选择元素后面,不能在层级比较深,连缀DOM遍历方法后面使用,即(“ul”").live...可以,但 取消绑定用die()方法 跟unbind()一样。...这个方法就相当于加强版live()方法,由于live方法事件委托会直接委托在根节点上,费时费力, 于是就有了delegate()方法,它可以选择委托范围,就是给selector父节点内所有childSelector

2.4K20

jQuery源码解析之click()事件绑定

( data, fn ) { xxx } 如果有参数,则是绑定事件,调用 on() 方法; 没有参数,则是调用事件,调用 trigger() 方法( trigger() 放到下篇讲 ) 三、$().on...() 作用: 在被选元素及子元素上添加一个或多个事件处理程序 源码: //绑定事件方法 //源码5812行 jQuery.fn.extend( { //在被选元素及子元素上添加一个或多个事件处理程序...jQuery.on() 方法: //绑定事件on方法 //源码5143行 //目标元素,类型(click,mouseenter,focusin,xxx),回调函数function(){xxx...this, arguments ); }; //让fn和origFn使用相同guid,这样就能移除origFn方法 // Use same guid so caller...:\.(.+)|)/; 综上,绑定事件本质即调用element.addEventListener()方法,但 jQuery 有太多情况需要考虑了。 (完)

1.7K20

jQuery 事件(三) 事件绑定和解绑、对象使用、自定义事件

jQuery on()方法是官方推荐绑定事件一个方法 基本用法:.on( events ,[ selector ] ,[ data ] ) 最常见给元素绑定一个点击事件,对比一下快捷方式与on...如果提供了第二参数,那么事件在往上冒泡过程中遇到了选择器匹配元素,将会触发事件回调函数 卸载事件off()方法 通过.on()绑定事件处理程序 通过off() 方法移除该绑定 根据on绑定事件一些特性...正常来说是不可以,但是jQuery解决了这个问题,提供了一个trigger方法来触发浏览器事件 $('#elem').trigger('click'); //在绑定on事件元素上,通过trigger...尽管 .trigger() 模拟事件对象,但是它并没有完美的复制自然发生事件,若要触发通过 jQuery 绑定事件处理函数,而触发原生事件,使用.triggerHandler() 来代替 triggerHandler...如果它们不是由目标元素直接触发,那么它就不会进行任何处理 与普通方法返回 jQuery 对象(这样就能够使用链式用法)相反,.triggerHandler() 返回最后一个处理事件返回值。

4K30

使用jQuery.data()查看元素上绑定事件

最近遇到一个诡异问题,发现我添加在一个HTMLElement片段上面的事件绑定,会在后续流程中,无故丢失了。但是,我不知道它是什么时候丢失。 所以我需要要一步步逼近定位到问题。...最先想到是浏览器面板上面的,可以选中元素,看元素上面的事件绑定。 但浏览器上面看到是结果量,也就是看到是已经丢失了事件元素,但我还是不知道什么时候丢失。...我可以断点取到每个阶段HTMLElement元素状态,但是,这个时候,我却找不到观察其事件绑定情况方法。 谷歌好久,发现JS原生是没法查看事件绑定情况。...还好,我们都是用jQuery,用$.on()。 而jQuery自身事件绑定,额外添加了一层事件数组。...,就会返回这个元素上面绑定所有事件

1.8K00

关于jQuery用bind动态绑定事件无效处理

最近在进行页面开发,在做页面特效时候,需要给一个动态加载按钮赋予一个事件 于是不假思索 用$(obj).bind(); 来绑定事件 。...但是这样存在一个问题: bind确实能绑定事件,但是那是相对于固定html标签来说 当页面内容属于动态加载时候,bind事件就存在一个bug, 只能bind一次,当你第二次触发事件时候就没用了...当我使用bind来绑定click事件,这时, 第一次点击click能成功触发 但是第二次点击,click事件无效了......后面研究发现,jQuery还有个绑定事件方法:delegate(); 用法如下: $(".sentnum-box").delegate(".a-add-ordergoods","click",function...(){ //js数据代码 }); 这样就能实现对动态数据绑定事件,并永不失效

1.3K20

jQuery通过id选择器绑定双击事件,和appendTo()方法使用详解

下拉列表绑定一个双击事件dblclick() $("#id”).dblclick(function(){ //获取列表中所有被选中option var alloptions...= $("option:selected");//这种写法存在问题,如果已分配列表中也有被选中option同样会被选中//不可以 var alloptions = $("#id option...$("option:selected");//不可以 var alloptions = $("option:selected",$("#id"));//选择哪个下拉(select)列表被选中值...,选中中值(第四种写法) alert(alloptions.length); //appendTo()把所有匹配元素追加到另一个指定元素元素集合中。...//实际上,使用这个方法是颠倒了常规$(A).append(B)操作,即不是把b追加到a,而是把a追加到b $("option:selected",this).appendTo($("

1.2K20

jQuery中on()、bind()、live()、delegate()之间区别

/jquery1.9版本以下支持,jquery1.9及其以上版本删除了此方法jquery1.9以上版本用on()方法来代替 $(selector).delegate(childSelector...及其以上版本;jquery1.7版本出现之后用于替代bind(),live()绑定事件方式; event 必需项;添加到元素一个或多个事件,例如 click,dblclick等; 单事件处理:例如...matchSelector方法来选出那个事件被调用时,会非常慢 当发生事件元素在你DOM树中很深时候,会有performance问题 当然,live方法还可以被绑定到具体元素(或context)...而不是document上,这样: $('a', $('#container')).live(...); 3 .delegate() .delegate()则是更精确小范围使用事件代理,性能优于...而和.live()相同地方在于都是用event delegation; 优点 你可以选择把事件绑定到对应元素上 chaining被正确支持了 jQuery仍然需要迭代查找所有的selector/event

1.2K30

【Java 进阶篇】JQuery 事件绑定:`on` 与 `off` 奇妙舞曲

这样,即使在页面加载完成后动态添加了新列表项,它们仍然会受到事件监听。 解绑事件 on 方法不仅能绑定事件,还能解绑事件,以避免不必要执行。...这样,只有在特定命名空间下绑定事件才会被解绑,不影响其他事件事件数据传递 有时候我们需要在触发事件时传递一些额外数据。on 方法允许我们通过事件对象 data 属性来实现这一目的。 <!...解绑指定事件类型 off 方法可以根据事件类型来解绑事件。如果你只想解绑某个具体事件类型回调函数,可以这样做: <!...然后,通过 off 方法解绑了点击事件这样,鼠标悬停事件仍然会被触发,但点击事件不再响应。 解绑所有事件 如果你想彻底解绑所有类型事件,可以调用 off 方法传递任何参数。 <!...这样,只有在特定命名空间下绑定事件才会被解绑,不影响其他事件。 小结 通过深入学习 on 和 off 方法,我们已经更好地理解了 JQuery 事件绑定精髓。

15930

【Java 进阶篇】深入浅出:JQuery 事件绑定奇妙世界

本文将带你深入浅出,探索 JQuery事件绑定,为你揭开这个奇妙世界面纱。 开启奇妙之旅 在开始探索 JQuery 事件绑定之前,我们先来简单了解一下 JQuery。...事件绑定是指在特定 HTML 元素上设置一个监听器,用于捕捉用户触发事件(比如点击、输入、鼠标移动等),并执行相应操作。在 JQuery 中,事件绑定通常使用 on 方法来完成。...; }); 在这个例子中,我们创建了一个按钮元素,并使用 JQuery on 方法为按钮绑定了一个点击事件。...创造奇迹:动态绑定与解绑 在实际开发中,我们经常面临动态添加或移除元素情况。对于这样场景,JQuery 提供了动态事件绑定与解绑方法,让你能够随心所欲地处理事件。...然后,通过再次使用 on 方法,我们动态地绑定了按钮鼠标移入事件。这意味着即使按钮是在页面加载后动态生成,我们仍然能够为它添加新事件监听器。

16110

python测试开发django-167. jQuery中append() 动态新增元素 click 事件无效解决办法

最简单方法就是直接在标签中写onclick=””, 这种是简单粗暴解决办法,但一般这样写。...使用live live()函数会给被选元素绑定上一个或者多个事件处理程序,并且规定当这些事件发生时运行函数。 通过live()函数适用于匹配选择器的当前及未来元素。...}) 看到网上很多都是用live方法,但是会报错:TypeError: $(…).live is not a function 主要原因是jquerylive()方法jquery1.9...使用on 接下来还是使用on方法,把点击事件绑定到它父元素上,这样就可以了 // 绑定select下拉框click事件 $('#cards').on('click',...}) 最通用场景是click事件绑定到document上,这样就使用任何情况了 // 绑定select下拉框click事件 $(document).

86120
领券