jQuery中的类被移除后为什么还可以触发该类的事件?
本人新手,场景是自己做的一个小练习:设置两组投票数据,每人可以投三票,超过了了就弹窗提示。验证方法是在localstorage中设置一个计数器,每次点击后计数器+1。然后我想自己另外写一个刷票的小功能:添加一个解除限制的按钮,点击这个按钮后就可以直接在原先的投票按钮上进行无限次数的点击。
我的实现方式是直接把原先的按钮类替换成另一个类,然后模拟原先的按钮类操作。可以实现无限次的点击,但是每次都会先触发原先那个按钮类的localstorage验证操作。想请教下各位这是怎么回事
后来想了个取巧的办法:把localstorage里的计数器改成一个很大的负数,来实现伪无限次点击。但是总感觉这种解决方式不是很优雅,所以想请教下各位有没有更好点的解决办法
相关代码:
按照答案里“nightire”的指点,在类替换后先用off()
将之前绑定在btn
类上的事件取消,然后重新给btn-s
绑定事件即可。实现代码:
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
没有动手做实验,只是看了一下你的例子做一个无责任分析啊。
我觉得原因很简单,尽管你
$('.btn').addClass('btn-s').html("无限投");
了一下,但是原来的.btn
还在啊,于是通过$('.btn')
绑定的事件回调还是会响应的。要想在添加了额外的 class 之后取消原来的逻辑,你应该解绑,或者在回调里判断一下有没有这个额外的 class。我的实现方式是直接把原先的按钮类替换成另一个类
addClass是添加一个类,添加完之后你的.btn还是存在的,所以要removeClass('.btn')