js 请教一个绑定事件清除的问题

m0_37670973 2018-06-08 11:49:19
<script type="text/javascript">

function bindEvent() {
var func = function() {
alert("p标签被点击");
}
document.getElementById("myp").addEventListener("click", func, false);
}

bindEvent();
function unBindEvent() {
//$("#myp").unbind("click");
//document.getElementById("myp")['click']=null;
在这里如何删除上边绑定的click事件
}
unBindEvent();

</script>
...全文
477 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
天际的海浪 2018-06-09
  • 打赏
  • 举报
回复

    var func = function() {//事件函数在清除时也要用到。
        alert("p标签被点击");
    }

    function bindEvent() {
        document.getElementById("myp").addEventListener("click", func, false);
    }

    bindEvent();
    function unBindEvent() {
        document.getElementById("myp").removeEventListener("click", func, false);
    }
    unBindEvent();


ambit_tsai-微信 2018-06-09
  • 打赏
  • 举报
回复
removeEventListener的用法太麻烦了,采用jQuery的写法方便多了

function bindEvent() {
	$('#myp').on('click', function() {
        alert("p标签被点击");
    });
}
function unBindEvent() {
	$('#myp').off('click');
}
天际的海浪 2018-06-09
  • 打赏
  • 举报
回复
引用 5 楼 m0_37670973 的回复:
[quote=引用 4 楼 jslang 的回复:] [quote=引用 2 楼 m0_37670973 的回复:] [quote=引用 1 楼 jslang 的回复:]

    var func = function() {//事件函数在清除时也要用到。
        alert("p标签被点击");
    }

    function bindEvent() {
        document.getElementById("myp").addEventListener("click", func, false);
    }

    bindEvent();
    function unBindEvent() {
        document.getElementById("myp").removeEventListener("click", func, false);
    }
    unBindEvent();


非常谢谢您的回答 func定义在bindEvent里面的话,能清除该事件吗。[/quote] 因为removeEventListener()清除时必须告诉它要清除的是哪个函数。 所以removeEventListener()执行时也必须让它能访问到func
    var func;
    function bindEvent() {
        func = function() {//事件函数在清除时也要用到。
           alert("p标签被点击");
        }
        document.getElementById("myp").addEventListener("click", func, false);
    }

    bindEvent();
    function unBindEvent() {
        document.getElementById("myp").removeEventListener("click", func, false);
    }
    unBindEvent();
或者你用 jquery 绑定和清除事件,jquery 内部会自己记录所有已经绑定的事件函数,在清除事件时就不需要你提供了。 [/quote] 感谢您的回答,我现在遇到了一个问题:事件绑定的方法是在第三方提供的方法里,采用addEventListener动态追加的,我不能控制事件的绑定,我现在想重写这个事件,所以想把以前的事件删除,追加我自己的。结果遇到了这个问题,原来绑定的事件删除不掉。第三方的方法和上面的代码结构类似,事件响应方法在函数的内部定义,有什么方法能删除掉吗?[/quote] 那就没办法了,只有重建这个元素,但这可能用引起其它的问题。

    function unBindEvent() {
        document.getElementById("myp").outerHTML+="";
    }
m0_37670973 2018-06-09
  • 打赏
  • 举报
回复
引用 4 楼 jslang 的回复:
[quote=引用 2 楼 m0_37670973 的回复:] [quote=引用 1 楼 jslang 的回复:]

    var func = function() {//事件函数在清除时也要用到。
        alert("p标签被点击");
    }

    function bindEvent() {
        document.getElementById("myp").addEventListener("click", func, false);
    }

    bindEvent();
    function unBindEvent() {
        document.getElementById("myp").removeEventListener("click", func, false);
    }
    unBindEvent();


非常谢谢您的回答 func定义在bindEvent里面的话,能清除该事件吗。[/quote] 因为removeEventListener()清除时必须告诉它要清除的是哪个函数。 所以removeEventListener()执行时也必须让它能访问到func
    var func;
    function bindEvent() {
        func = function() {//事件函数在清除时也要用到。
           alert("p标签被点击");
        }
        document.getElementById("myp").addEventListener("click", func, false);
    }

    bindEvent();
    function unBindEvent() {
        document.getElementById("myp").removeEventListener("click", func, false);
    }
    unBindEvent();
或者你用 jquery 绑定和清除事件,jquery 内部会自己记录所有已经绑定的事件函数,在清除事件时就不需要你提供了。 [/quote] 感谢您的回答,我现在遇到了一个问题:事件绑定的方法是在第三方提供的方法里,采用addEventListener动态追加的,我不能控制事件的绑定,我现在想重写这个事件,所以想把以前的事件删除,追加我自己的。结果遇到了这个问题,原来绑定的事件删除不掉。第三方的方法和上面的代码结构类似,事件响应方法在函数的内部定义,有什么方法能删除掉吗?
天际的海浪 2018-06-09
  • 打赏
  • 举报
回复
引用 2 楼 m0_37670973 的回复:
[quote=引用 1 楼 jslang 的回复:]

    var func = function() {//事件函数在清除时也要用到。
        alert("p标签被点击");
    }

    function bindEvent() {
        document.getElementById("myp").addEventListener("click", func, false);
    }

    bindEvent();
    function unBindEvent() {
        document.getElementById("myp").removeEventListener("click", func, false);
    }
    unBindEvent();


非常谢谢您的回答 func定义在bindEvent里面的话,能清除该事件吗。[/quote] 因为removeEventListener()清除时必须告诉它要清除的是哪个函数。 所以removeEventListener()执行时也必须让它能访问到func
    var func;
    function bindEvent() {
        func = function() {//事件函数在清除时也要用到。
           alert("p标签被点击");
        }
        document.getElementById("myp").addEventListener("click", func, false);
    }

    bindEvent();
    function unBindEvent() {
        document.getElementById("myp").removeEventListener("click", func, false);
    }
    unBindEvent();
或者你用 jquery 绑定和清除事件,jquery 内部会自己记录所有已经绑定的事件函数,在清除事件时就不需要你提供了。
m0_37670973 2018-06-09
  • 打赏
  • 举报
回复
引用 1 楼 jslang 的回复:

    var func = function() {//事件函数在清除时也要用到。
        alert("p标签被点击");
    }

    function bindEvent() {
        document.getElementById("myp").addEventListener("click", func, false);
    }

    bindEvent();
    function unBindEvent() {
        document.getElementById("myp").removeEventListener("click", func, false);
    }
    unBindEvent();


非常谢谢您的回答 func定义在bindEvent里面的话,能清除该事件吗。

87,995

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧