javascript - 对js绑定事件与移除事件有些不理解,求指点!(内有代码)
PHP中文网
PHP中文网 2017-04-11 12:46:07
[JavaScript讨论组]



    qqq
    


    
    

所有的代码都在这。我想要实现的是打印一次'ppp'。事实却是打印多次'ppp'。

PHP中文网
PHP中文网

认证0级讲师

全部回复(1)
怪我咯

点一下打印一次ppp,没毛病啊~

另外提醒你,你这样是移除不掉事件的。
原生js移除事件需要将绑定事件时候的函数传入才能移除,bind是返回一个新的函数,并不是this.logic,所以根本移除不掉,每次点都会打印一次ppp,你可以自己在logic里面打断点调试:

代码给你改了一下,点一次过后解除事件绑定,只会打印一次了。

   <!DOCTYPE html>
<html>

<head>
    <title>qqq</title>
    <meta charset="utf-8" />
</head>

<body>
    <button>点击</button>
    <script type="text/javascript">
        var f;

        function Monkey(options) {
            this.dom = options.dom
        }
        Monkey.prototype.entry = function() {
            f = this.logic.bind(this);
            this.dom.addEventListener('click', f, false);
        }
        Monkey.prototype.logic = function() {
            this.dom.removeEventListener('click', f);
            console.log('ppp');
        }

        var btn = document.querySelector('button');

        var monkey = new Monkey({
            dom: btn
        });

        monkey.entry();
    </script>
</body>

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

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