javascript - 为什么 jquery 设置on绑定点击事件会触发两次点击事件?需要设置off,然后设置on
PHPz
PHPz 2017-04-11 12:51:54
[JavaScript讨论组]

如果只设置了on 就会点击触发两次点击事件,执行两次代码,导致判断hasClass一直为true,
解决方案:先设置off 解除绑定后再设置on监听点击事件,就可以。 求解释,谢谢!

 appList.off('click','img.expand-img').on("click", "img.expand-img", function () {
            var $this = $(this);
            var appText = $this.parent().find("p.app-text");
            if (appText.hasClass("text-nowrap")) {
                appText.removeClass("text-nowrap");
            } else {
                appText.addClass("text-nowrap");
            }
            return false;
        });
PHPz
PHPz

学习是最好的投资!

全部回复(2)
PHP中文网

这段代码是不是会执行两次? 前面加个console.error('fuck...')看看都有哪些调用路径过来呗。

一般绑一次,肯定只会处理一次事件,但是绑2次自然就会处理2次事件。jQuery不去重复的。

.off()应该会同时干掉所有相同类型的事件绑定。小心使用,别把其他地方绑定的事件也给干掉了。

迷茫

事件绑定具有叠加效应,如果你给同一个 DOM 绑定过多次事件,那此类型事件再触发的时候会被执行多次。所以通过在绑定事件前调用 off 来取消之前绑定过的此类型事件。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号