zoukankan      html  css  js  c++  java
  • 关于jquery on方法进行事件绑定触发次数指数叠加的问题

    发生环境

    $modal.on('click', '#search',function(e){});

    上面代码的语法是这样的:

    .on( events [, selector ] [, data ], handler(eventObject) )

    其中$modal为父容器,在该容器上绑定click事件,当id为search的button被点击时才触发function

    存在问题

    1. 点击第一次触发一次

    2. 点击第二次触发两次

    3. 点击第三次触发四次

    ...

    以此类推成指数增长

    问题原因:on('click')的重复绑定

    解决办法

    1.使用unbind,代码如下:(会取消绑定该容器下所有子元素的click事件)

    $modal.unbind('click').on('click', '#search',function(e){});

    2.直接使用子元素进行绑定,代码如下:

    $('#search').click(function(e){});

    tips:

    1. on()是将function绑定在元素上

    2. click()是将function绑定在click事件上

    可能是由于这两个原因导致on可能发生重复绑定多个事件,而只要click一次,click()的function只执行一次

  • 相关阅读:
    SQL Server 备份方案
    Azure 学习笔记
    SEO – 大杂烩
    Asp.net core 学习笔记之 Tag Helper
    读取注册表
    DOM学习历程-3
    inno setup给控制的那边加图标
    C++生成exe安装到别人那边无法使用缺少dll
    inno setup 最后
    inno setup
  • 原文地址:https://www.cnblogs.com/savokiss/p/3992220.html
Copyright © 2011-2022 走看看