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

绑定相同的事件两次将在jQuery 1.4.2中触发两次

在jQuery 1.4.2中,绑定相同的事件两次会导致该事件触发两次。这是因为在该版本的jQuery中,事件绑定的机制发生了变化。

在jQuery 1.4.2之前的版本中,每次绑定事件时,jQuery会自动检测是否已经存在相同的事件绑定,如果存在则不会重复绑定。但是在1.4.2版本中,jQuery取消了这种自动检测机制,导致相同的事件可以被绑定多次。

这种变化可能会导致一些意外的行为,特别是在使用事件委托(event delegation)的情况下。事件委托是一种常见的优化技术,通过将事件绑定到父元素上,然后利用事件冒泡机制来处理子元素的事件。但是在jQuery 1.4.2中,如果不小心绑定了相同的事件多次,可能会导致事件处理函数被多次触发。

为了避免这种问题,可以在绑定事件之前先解绑已有的事件,或者使用off()方法来解绑所有相同的事件,然后再重新绑定。另外,也可以通过使用事件命名空间(event namespace)来避免重复绑定相同的事件。

总结起来,绑定相同的事件两次会在jQuery 1.4.2中触发两次,可能导致意外的行为。为了避免这种问题,可以在绑定事件之前先解绑已有的事件,或者使用off()方法解绑所有相同的事件,然后再重新绑定。使用事件命名空间也是一种避免重复绑定的方法。

腾讯云相关产品推荐:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

实现ApplicationListener 事件触发两次问题

Override public void onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent) { } } 但是发现这个事件触发两次...里面代码被重复执行了 1.排查问题 原因是: 一个项目中引入Spring和SpringMVC这两个框架,那么它其实就是两个容器,Spring是父容器,SpringMVC是其子容器,并且在Spring父容器中注册Bean...对于SpringMVC容器中是可见,而在SpringMVC容器中注册Bean对于Spring父容器中是不可见,也就是子容器可以看见父容器中注册Bean,反之就不行。...详见 那么其实我们spring applicationontext和使用MVC之后webApplicationontext在刷新bean后都会调用我们onApplicationEvent方法,分别传入各自...//需要执行逻辑代码,当spring容器初始化完成后就会执行该方法。 }

87240
  • jQuery 双击事件(dblclick)时,不触发单击事件(click)

    出处:jQuery 双击事件(dblclick)时,不触发单击事件(click) 在jQuery事件绑定中,执行双击事件(dblclick)时能触发两次单击事件(click)。...即一个标签元素(如div等),如果元素同时绑定了单击事件(click)和双击事件(dblclick),那么执行单击事件(click)时,不会触发双击事件(dblclick), 执行双击事件(dblclick...)时却会触发两次单击事件(click)。...mouseout,click,dblclick; 在双击事件(dblclick),触发两次单击事件(click)中,第一次单击事件(click)会被屏蔽掉,但第二次不会。...}) 从测试结果来看,如果前后两次点击时间在 300ms 左右时候,还是很容易出现 click 和 dblclick 事件被“同时”调用情况,而如果间隔时间更短或更长,则只会有 click 或

    5.3K30

    第77天:jQuery事件绑定触发

    ,.height()方法返回是 数字类型(20),.css(“height”)返回是字符串类型(20px),因此.height()方法常用在参与数学计算时候 2、坐标值 $(“div”).offset...(); // 获取或设置坐标值 设置值后变成相对定位 $(“div”).position(); // 获取坐标值 子绝父相 只能读取不能设置 3、滚动条(滚动事件) $(“div”).scrollTop...(); // 相对于滚动条顶部偏移 $(“div”).scrolllLeft(); // 相对于滚动条左部偏移 案例:两次跟随广告 案例:防腾讯固定导航栏 二、jQuery事件 1、绑定 click.../mouseenter/blur/keyup // 绑定事件 bind:$node.bind(“click”,function(){}); // 触发一次 one : $node.one(“click”...click : $(“div”).click(); trigger:触发事件,并且触发浏览器默认行为 triggerHandler:不触发浏览器默认行为

    1.3K30

    onclick与addEventListener区别

    对于多个相同事件处理器,不会重复触发,不需要手动使用removeEventListener清除 5.IE9使用attachEvent和detachEvent 探究: onclick添加事件: element.onclick...,javascript代码 运行结果: 可想而知,只会弹出一个弹出框,虽然绑定两次,‘我是click2’ 一个click处理器在同一时间只能指向唯一对象。...代码: 运行结果: 两次绑定事件,都能够成功运行,也就是前后弹出 ‘我是addEvent1’ ‘我是addEvent2’ 由此可知,对于一个可以绑定事件对象,想多次绑定事件都能运行,选用addEventListener...对于上面的匿名函数,就算内容一样,也会依次执行,因为并不能算是相同事件处理器。 里面的this引用,不是window对象,而是触发事件元素引用。...对于多个相同事件处理器,不会重复触发,不需要手动使用removeEventListener清除 5.IE9使用attachEvent和detachEvent 参考文献: https://developer.mozilla.org

    1.5K10

    react面试题

    父组件可以向子组件传递props,props中带有初始化子组件数据,还有回调函数 子组件state发生变化时,在子组件事件处理函数中,手动触发父函数传递进来回调函数,同时时将子组件数据传递回去...key做为DOM节点标识,如果是前后两次arr分别为[1,2,3,4]和[5,6,7,8]和前后两次arr分别为[1,2,3,4]和[4,3,2,1]情况,很明显前者可以认为是DOM改变了,后者可以认为是...,就用数据本身作为key值吧 jquery事件会被绑定在原生节点本身,而在react中会被统一绑定到document去代理 扩展: 知道react中事件大致注册以及触发原理吗 注册时react...会首先判断该组件上props是否是event事件,若是则绑定到document上,回调函数是dispatchEvent,将绑定事件react组件实例rooNodeId(虚拟dom唯一标识)取出来...,作为key值,对应回调函数作为value值存为一个对象 触发事件冒泡传递到document时候,会触发dispatchEvent执行,根据目标实例递归向上寻找目标实例父元素和祖先元素,存到数组

    70420

    JQuery之内置函数响应事件

    在很短时间内发生两次 click,即是一次 double click 事件。提示:如果把 dblclick 和 click 事件应用于同一元素,可能会产生问题。...这将触发所有绑定focus函数,注意,某些对象不支持focus方法。 2.失去焦点blur :当元素失去焦点时触发 blur 事件。...这个函数会调用执行绑定到blur事件所有函数,包括浏览器默认行为。可以通过返回false来防止触发浏览器默认行为。...4.选中内容select :当 textarea 或文本类型 input 元素中文本被选择时,会发生 select 事件。这个函数会调用执行绑定到select事件所有函数,包括浏览器默认行为。...可以通过在某个绑定函数中返回false来防止触发浏览器默认行为。 四:其他事件: 1.scroll 当用户滚动指定元素时,会发生 scroll 事件

    2.1K60

    前端知识普及之页面加载

    从微观上分的话,页面加载有两部分 一个是以DOMContentLoaded触发为标志DOM树渲染完成 一个是以辅助资源img,font加载完成为触发标志onload事件 他们两个具体区别就是"资源加载...这两个线,分别代表是DOMContentLoaded和onload触发时间。 这也更能直观看出,DOMContentLoaded事件比onload事件触发吧。现在回到我们开头那个问题。...接下来我们要做最后一件事,就是看看jquery老大哥,他ready事件原理到底是什么. jquery ready事件浅析 jquery主要做工作就是兼容IE6,7,8实现DOMContentLoaded...这个时候模拟触发DOMContentLoaded事件,其实和onload事件触发时间并没有太久时间距离。 这种方式兼容低版本IE还是不太可靠。...//这也是上面两次绑定事件原因,会保证只执行一次 if (wait !

    1.6K90

    简单说 JavaScript中事件委托(上)

    从上面的图中我们看见,当点击 蓝色 p 元素时,先触发了 p 元素上绑定事件,然后又触发了 红色 div 元素上绑定事件,这就是事件冒泡了。 事件委托 实现 先来段代码 <!...,不过在这之前,我们还要明白一下什么是 event 对象 任何事件触发后将产生一个event对象 event对象记录事件发生时鼠标位置、键盘按键状态和 触发对象等信息 一般情况下,绑定事件处理函数时...2、第一段绑定两次事件,第二段绑定了一次事件 也就是说,原来在 li 上绑定事件,现在委托在了父元素 ul 上,而在 ul 上只需要绑定一次就可以了。...事件委托 好处 1、减少了事件监听器,原来需要在多个子元素绑定相同事件处理函数,现在只需要在祖先元素(一般为父元素)上统一定义一次即可。...还有 JQuery事件委托 又是怎么做呢? 看这里 简单说 JavaScript中事件委托(下)

    58920

    4-Jquery学习四-事件操作

    即使是执行live()函数之后新添加元素,只要它匹配当前jQuery对象选择器,绑定事件处理函数仍然对其有效。 要删除通过live()绑定事件,请使用die()函数。...// 这里this指向触发点击事件p元素(Element) alert( $(this).text() ); }); 如果要绑定所有的元素,你可以编写如下jQuery代码: //为所有...指向触发点击事件p元素(Element) alert( $(this).text() ); }); 此外,我们还可以同时绑定多个事件,并为事件处理函数传递一些附加数据,我们可以通过jQuery...同样以初始HTML代码为例,我们可以编写如下jQuery代码: // 为div中所有p元素绑定click事件处理程序 // 只有n2、n3可以触发事件 $("div").on("click", "p...此外,你可以为同一元素多次调用该函数,从而绑定多个事件处理函数。触发resize事件时,jQuery会按照绑定先后顺序依次执行绑定事件处理函数。

    4.5K90

    jQuery最佳实践

    请看下面的例子,为a元素绑定一个处理点击事件函数: $('a').click(function(){ alert($(this).attr('id')); }); 这段代码意思是,点击a元素后,弹出该元素...为了获取这个属性,必须连续两次调用jQuery,第一次是$(this),第二次是attr('id')。 事实上,这种处理完全不必要。...事件委托处理(EventDelegation) javascript事件模型,采用"冒泡"模式,也就是说,子元素事件会逐级向上"冒泡",成为父元素事件。 利用这一点,可以大大简化事件绑定。...因此,这个事件只需要在父元素绑定1次即可,而不需要在子元素上绑定100次,从而大大提高性能。这就叫事件"委托处理",也就是子元素"委托"父元素处理这个事件。 具体写法有两种。...唯一区别在于,.delegate()是当事件冒泡到指定父元素时触发,.live()则是当事件冒泡到文档根元素后触发,因此.delegate()比.live()稍快一点。

    1.3K20

    双击事件(dblclick)时,不触发鼠标按下(mousedown) 动作事件

    在一个dom节点事件绑定中,如果同时绑定了dblclick和mousedown那么想要执行双击事件(dblclick)时能就会触发两次mousedown事件。...两者区别是,mouseenter事件触发一次,而只要鼠标在节点内部移动,mouseover事件会在子节点上触发多次。...在单击时候(也就是鼠标按下时候)不会执行双击,但是双击时候会执行两次单击再执行双击事件。 解决思路:要想双击时不执行单击事件,就使用定时器清除掉两个单击事件,留下一个双击事件。...要想不执行第一次任务队列,那么定时器时间间隔就必须大于两次单击时间间隔了。这样才能清除第一次单击事件,所以,这个200是酌情值,大于间隔就行。...第一次单击任务不执行了,是被定时器延时,然后第二次点击时候给清除了。那么第二次点击事件呢? 在两次单击之后,会立马执行一个双击事件,双击事件一开头就把这个第二次点击事件给清除了。

    67920

    移动端效果之IndexList

    + 'px'; content.style.height = currentHeight + 'px'; 1.3 绑定滑动事件 在右边索引栏上加上滑动事件,当点击或者滑动时候触发。...在源代码中在touchstart事件结尾处,在window上绑定了touchmove与touchend事件,是为了使得滑动得区域更大,只有在开始时候在索引栏上触发了touchstart事件时,之后再...window上触发滑动和结束事件,这就意味着我们在滑动过程中可以在左侧内容区域滑动,同时也能达到index效果。...如果不是用到多点触控,changedTouches和touches区别并不是特别大,changedTouches在同一点点击两次,第二次将不会有touch值。...总结 分析就这么多,多看源码能够学到优秀设计理念。比如如果最开始让我来做的话,我可以就只会在右侧索引栏上绑定事件,而不会关联左侧内容,这样滑动区域将会大大减小。

    93840

    医疗数字阅片-医学影像-Lodash 是一个一致性、模块化、高性能 JavaScript 实用工具库。_.throttle(func, , [option

    当我们给 DOM 绑定事件时候,加了防抖和节流函数变得特别有用。为什么呢?因为我们在事件和函数执行之间加了一个控制层。记住,我们是无法控制 DOM 事件触发频率。...看下滚动事件例子: 当使用触控板,滚动滚轮,或者拖拽滚动条时候,一秒可以轻松触发30次事件。经我测试,在智能手机上,慢慢滚动一下,一秒可以触发事件100次之多。...但是如果事件触发时间间隔过长,debounce 则不会生效。 前缘(或者“immediate”) 你会发现,直到事件停止快速执行以后,debounce 事件才会触发相应功能。为何不立即触发呢?...那样的话就跟原本非 debounce 处理无异了。 直到两次快速调用之间停顿结束,事件才会再次触发。 这是带 leading 标记例子: ?...结论 使用 debounce,throttle 和 requestAnimationFrame 都可以优化事件处理,三者各不相同,又相辅相成。

    2.4K20
    领券