jQuery中的类被移除后为什么还可以触发该类的事件?

发布于 2022-08-31 09:19:07 字数 718 浏览 15 评论 0

本人新手,场景是自己做的一个小练习:设置两组投票数据,每人可以投三票,超过了了就弹窗提示。验证方法是在localstorage中设置一个计数器,每次点击后计数器+1。然后我想自己另外写一个刷票的小功能:添加一个解除限制的按钮,点击这个按钮后就可以直接在原先的投票按钮上进行无限次数的点击。
我的实现方式是直接把原先的按钮类替换成另一个类,然后模拟原先的按钮类操作。可以实现无限次的点击,但是每次都会先触发原先那个按钮类的localstorage验证操作。想请教下各位这是怎么回事


后来想了个取巧的办法:把localstorage里的计数器改成一个很大的负数,来实现伪无限次点击。但是总感觉这种解决方式不是很优雅,所以想请教下各位有没有更好点的解决办法

相关代码


按照答案里“nightire”的指点,在类替换后先用off()将之前绑定在btn类上的事件取消,然后重新给btn-s绑定事件即可。实现代码

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

﹂绝世的画 2022-09-07 09:19:07

没有动手做实验,只是看了一下你的例子做一个无责任分析啊。

我觉得原因很简单,尽管你 $('.btn').addClass('btn-s').html("无限投"); 了一下,但是原来的 .btn 还在啊,于是通过 $('.btn') 绑定的事件回调还是会响应的。要想在添加了额外的 class 之后取消原来的逻辑,你应该解绑,或者在回调里判断一下有没有这个额外的 class

抱猫软卧 2022-09-07 09:19:07

我的实现方式是直接把原先的按钮类替换成另一个类
addClass是添加一个类,添加完之后你的.btn还是存在的,所以要removeClass('.btn')

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文