关于jquery on方法进行事件绑定触发次数指数叠加的问题

时间:2023-11-30 14:35:20

发生环境

$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只执行一次