首页
学习
活动
专区
圈层
工具
发布

JQuery 事件绑定不生效

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

3.4K30

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 操作,就能找到唯一的父级被绑定元素了.

5.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.7K21

    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 有太多的情况需要考虑了。 (完)

    2.4K20

    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() 返回最后一个处理的事件的返回值。

    4.9K30

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

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

    2.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.7K20

    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.8K20

    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.8K30

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

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

    81630

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

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

    1.3K10

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

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

    1.3K20
    领券