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

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


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

相关代码


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

阅读 5.6k
评论
    2 个回答

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

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

      • 2.9k

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

        撰写回答

        登录后参与交流、获取后续更新提醒

        相似问题
        推荐文章