我写了如下的代码:
function wrap(){
$('.major').on('click',function(){
alert('1');
});
};
$('#btn').on('click',wrap);
想实现当点击#btn按钮然后再点击.major时弹出1,但是这样写后,当多次点击#btn按钮然后再点击.major后会弹出多次1,请问这是怎么回事?难道通过on绑定多次,触发的时候就会执行多次吗?
那我该如何改进呢?
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
这是因为你每点击一次#btn就为.major绑定了一次click事件
用
object.onclick=function(){};这种格式只执行最后一次绑定那你就不该用
on,该用oncebtn是在major里面吗?如果是,由于事件冒泡,major也会触发点击事件,需要阻止事件冒泡。
是的,你已經回答了你的問題了,當你每執行一次
wrap就等於再次綁定一個click事件,並不是說清掉之前的在綁定。可以先清除綁定,這樣就不會綁定多次了。
你这样写点击此
#btn就会绑定几次.major,正确写法应该要定义一个控制器unbind('click')
加个状态判断:
var hasWrap = false;
function wrap(){
};
$('.major').on('click',function(){
});
$('#btn').on('click',wrap);