【JS】论元素的绑定和解绑事件

以你之姓@ 2022-03-25 11:10 400阅读 0赞

前言

  在JS的学习过程中,我们会了解到DOM,了解到元素,那么如何对一个元素进行绑定事件呢?事件绑定完之后可不可以解绑呢?都有什么方法呢?这都是今天我们要学习的内容。

方法

 方法一


















功能 函数
绑定事件 对象.on事件名字 = 事件处理函数
解绑事件 对象.on事件名字 = null

  具体事例:

  1. <input type="button" value="绑定事件" id="btn1" />
  2. <input type="button" value="解绑事件" id="btn2" />
  3. <script src="common.js"></script>
  4. <!--解绑方式1-->
  5. <script>
  6. //绑定事件
  7. my$("btn1").onclick = function(){
  8. console.log("亲亲");
  9. };
  10. //解绑事件
  11. my$("btn2").onclick = function(){
  12. my$("btn1").onclick = null;
  13. };
  14. </script>

  补充:common.js是我自己封装的一个函数,里面具体代码如下:

  1. function my$(id) {
  2. return document.getElementById(id);
  3. };

 方法二


















功能 函数
绑定事件 对象.addEventListener(“没有on的事件类型”,命名函数,false);
解绑事件 对象.removeEventListener(“没有on的事件类型”,函数名字,false);

  具体事例:

  1. <!--解绑方式2-->
  2. <script>
  3. function f1(){
  4. console.log("第一个");
  5. }
  6. function f2(){
  7. console.log("第二个");
  8. }
  9. my$("btn1").addEventListener("click",f1,false);
  10. my$("btn1").addEventListener("click",f2,false);
  11. //点击第二个按钮把第一个按钮绑定的事件解绑
  12. my$("btn2").onclick = function(){
  13. //解绑事件的时候,需要在绑定事件的时候,使用命名函数
  14. my$("btn1").removeEventListener("click",f1,false);
  15. };
  16. </script>

 方法三


















功能 函数
绑定事件 对象.attachEvent(“on事件类型”,命名函数);
解绑事件 对象.detachEvent(“on事件类型”,函数名字);

  具体事例:

  1. <!--解绑方式3-->
  2. <script>
  3. function f1(){
  4. console.log("第一个");
  5. }
  6. function f2(){
  7. console.log("第二个");
  8. }
  9. my$("btn1").attachEvent("onclick",f1);
  10. my$("btn2").attachEvent("onclick",f2);
  11. my$("btn2").onclick = function(){
  12. my$("btn1").detachEvent("onclick",f1);
  13. }
  14. </script>

方法的不同

  首先先说方法一吧,如果用这个方法进行绑定事件,绑定多次,后面的会把前面绑定的事件干掉,就是前面的事件就不起作用了,所以这种方法一般不怎么常用。我们重点来区分一下方法二和方法三:

1.方法名不一样

2.参数个数不一样 addEventListener三个参数,attachEvent两个参数

3.addEventListener 谷歌火狐IE11支持,IE8不支持; attachEvent 谷歌火狐IE11不支持,IE8支持

4.this不同,addEventListener中的this是当前绑定事件的对象,attachEvent中的this是window

5.addEventListener中的事件类型(事件的名字)没有on;attachEvent中的事件类型(事件的名字)有on

兼容代码

  1. <script>
  2. //绑定事件的兼容
  3. function addEventListener(element,type,fn){
  4. if(element.addEventListener){
  5. element.addEventListener(type,fn,false);
  6. }else if(element.attachEvent){
  7. element.attachEvent("on"+type,fn);
  8. }else{
  9. element["on"+type] = fn;
  10. }
  11. }
  12. //解绑事件的兼容代码
  13. //为任意的一个元素,解绑对应的事件
  14. function removeEventListener(element,type,fnName){
  15. if(element.removeEventListener){
  16. element.removeEventListener(type,fnName,false);
  17. }else if(element.detachEvent){
  18. element.detachEvent("on"+type,fnName);
  19. }else{
  20. element["on"+type]=null;
  21. }
  22. }
  23. function f1(){
  24. console.log("第一个");
  25. }
  26. function f2(){
  27. console.log("第二个");
  28. }
  29. addEventListener(my$("btn1"),"click",f1);
  30. addEventListener(my$("btn1"),"click",f2);
  31. my$("btn2").onclick = function(){
  32. removeEventListener(my$("btn1"),"click",f1);
  33. };
  34. </script>

总结

  写出来的代码尽可能适用于所有的浏览器,所以,还有好多的内容等着自己去学习呢!

发表评论

表情:
评论列表 (有 0 条评论,400人围观)

还没有评论,来说两句吧...

相关阅读

    相关 JS事件

    开发工具与关键技术:DW 作者:文泽钦 撰写时间:2019年1月17日 目的:实现一些js简单绑定按钮事件 分享一些简单的js绑定事件给一些刚入门的网友玩玩,代码简

    相关 js事件

    原生的js绑定事件一般有两种: 第一种是: ele.onclick = fn(); 这种方法只能绑定一次,再次绑定就会把原来的监听覆盖掉,解除绑定也很简单