美文网首页一个字,杂
jquery使用on()方法绑定的事件被执行多次的问题

jquery使用on()方法绑定的事件被执行多次的问题

作者: 是曹不是蔡 | 来源:发表于2021-01-08 15:14 被阅读0次

jQuery用on()方法绑定了事件之后,在代码执行过程中,可能会遇到事件被多次执行的情况。

本来以为是事件冒泡的问题,后来发现是on()方法的特性引起的问题。

简单还原一下问题的场景

这里简单还原一下问题的场景,使用一个按钮给另一个按钮通过on()方法绑定事件。

HTML的部分

<pre style="margin: 0px; padding: 0px; overflow: auto; overflow-wrap: break-word; font-family: &quot;Courier New&quot; !important; font-size: 12px !important;"><input id="bindEventBtn" type="button" value="给按钮绑定事件的按钮" />
<input id="noEmotionBtn" type="button" value="我是一个莫得感情的按钮" /></pre>

JavaScript的部分

$(function(){
    $('#bindEventBtn').click(function () {
        $('#noEmotionBtn').on('click', function () {
            alert('我是一个莫得感情的按钮');
        });
    });
})

这样,当多次点击bindEventBtn按钮,就会将同一个事件多次绑定到noEmotionBtn按钮上。

而on()方法的一个特性是绑定了多少次就触发多少次的,这就是问题所在。

问题的解决方法

解决问题的方法有两个,大体就是对重复绑定的事件进行解绑。

1.使用off()方法解绑。

<pre style="margin: 0px; padding: 0px; overflow: auto; overflow-wrap: break-word; font-family: &quot;Courier New&quot; !important; font-size: 12px !important;">$('#noEmotionBtn').off('click').on('click', function () {
    alert('我是一个莫得感情的按钮');
});</pre>

2.使用unbind()方法解绑。

<pre style="margin: 0px; padding: 0px; overflow: auto; overflow-wrap: break-word; font-family: &quot;Courier New&quot; !important; font-size: 12px !important;">$('#noEmotionBtn').unbind('click').on('click', function () {
    alert('我是一个莫得感情的按钮');
});</pre>

总结

实际的场景可能会复杂得多,因此在使用on()方法给元素绑定事件的时候要格外注意多次重复绑定的问题。

但是解决问题的大体思路是一样的,建议是统一先使用off()方法去解绑事件,避免出错。

当然了,最好是从根源上找到问题,也就是避免多次绑定事件的事情发生。

另外的,如果要给一个元素在多个地方绑定不同的事件处理函数的话,可能就要另外想想办法了。
转载自 [https://www.cnblogs.com/yanggb/p/11345188.html]

相关文章

  • jquery使用on()方法绑定的事件被执行多次的问题

    jQuery用on()方法绑定了事件之后,在代码执行过程中,可能会遇到事件被多次执行的情况。 本来以为是事件冒泡的...

  • jQuery事件绑定

    jquery 如何绑定事件?直接绑定和使用事件代理分别如何使用 在1.7之前的版本中jQuery处理事件有多个方法...

  • jquery 使用 unbind 解决重复绑定执行事件

    原文:jquery 使用 unbind 解决重复绑定执行事件 存在问题 在jquery监听click事件的时候会出...

  • jQuery事件

    1、jquery 如何绑定事件?直接绑定和使用事件代理分别如何使用 jquery在1.7版本之前绑定事件可通过bi...

  • jQuery 动画

    jquery 如何绑定事件?直接绑定和使用事件代理分别如何使用 使用.on( events [,selector ...

  • jquery入门(3)

    4.jQuery中的事件绑定 #4.1.事件绑定 on方法绑定 直接绑定 总结:事件里面的this是原生的this...

  • 原生js实现on与off 方法

    @拭目以待:原生js实现on与off 方法 使用过jQuery的同学,应该对事件绑定方法 .on() .off()...

  • jQuery事件

    一、jquery 如何绑定事件?直接绑定和使用事件代理分别如何使用 .on( events [,selector ...

  • 2018-02-13

    1.jquery on方法用于绑定事件 ,为标签绑定事件 为段落p绑定click事件,$("p").on(clic...

  • Jquery on方法绑定事件后执行多次

    参考文章http://blog.csdn.net/fun913510024/article/details/469...

网友评论

    本文标题:jquery使用on()方法绑定的事件被执行多次的问题

    本文链接:https://www.haomeiwen.com/subject/xqrfaktx.html