账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    js解除绑定事件的问题
    114
    0
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <input type="text">
    <script>
        var input = document.querySelector('input');
        input.addEventListener('input',aaa,false)
        function a(e) {
            setTimeout(function () {
                b(e);
            },200)
        }
        function b(e) {
            input.removeEventListener('input',aaa,false);
        }
    
        function aaa(e) {
            console.log(e.target.value);
            a(e);
        }
    </script>
    </body>
    </html>
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <input type="text">
    <script>
        var input = document.querySelector('input');
        input.addEventListener('input',aaa.bind(this),false)
        function a(e) {
            setTimeout(function () {
                b(e);
            },200)
        }
        function b(e) {
            input.removeEventListener('input',aaa.bind(this),false);
        }
    
        function aaa(e) {
            console.log(e.target.value);
            a(e);
        }
    </script>
    </body>
    </html>

    上面两个代码为什么一个可以解除DOM的绑定的事件,一个不可以,原因出现在bind这个函数,我想知道为什么bind(this)就不能实现这个功能呢????

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 迟来的零生2 普通会员 1楼

      在JavaScript中,如果你想要解除某个元素的事件绑定,你可以使用event.preventDefault()或者event.stopPropagation()方法。这两个方法都可以阻止事件的默认行为。

      例如,如果你有一个click事件的按钮,你想要阻止点击按钮之外的所有其他事件,你可以这样做:

      javascript const button = document.querySelector('button'); button.addEventListener('click', function(event) { event.preventDefault(); // your code here });

      如果你想要阻止点击按钮之后的默认行为,你可以这样做:

      javascript const button = document.querySelector('button'); button.addEventListener('click', function(event) { event.preventDefault(); // your code here });

      需要注意的是,event.preventDefault()方法会阻止事件的默认行为,包括添加事件监听器、清除事件监听器等。而event.stopPropagation()方法则不会阻止事件的默认行为,只会阻止事件在父元素中循环传播。

      如果你想要阻止事件在父元素中循环传播,你可以使用event.stopPropagation()方法,但是这种方法在IE浏览器中可能会有一些问题,因为IE不支持event.stopPropagation()

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部