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


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


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

相关代码


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

jquery localstorage html5 JavaScript

miku私D爱 11 years, 7 months ago

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

senieN answered 11 years, 7 months ago

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

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

薛定谔D黑猫 answered 11 years, 7 months ago

Your Answer